1

我正在尝试制作一个 Windows 8 Store 应用程序,该应用程序从 PHP 页面的 MySQL 数据库中获取结果作为 REST 服务。

我正在寻找 PHP 以返回字符串数组的 JSON 表示,并且在 Javascript 和 PHP 之间进行相同操作时,我很高兴地做到了这一点。我需要获取相同的 JSON 字符串并在我的 C# Windows 8 商店应用程序中使用它,有没有办法获取该 PHP 页面的返回并将其转换为普通的 C# 数组,而不是字典或更复杂的集合。

数据库确实有四个字段,所以如果我必须使用为此制作的特殊对象,我会,但我宁愿我没有,因为这个函数不需要那么多数据。

PHP 页面是这样的 - $search_text 通过 GET 传入:

$databaseConnection = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    if ($databaseConnection->connect_error)
    {
        echo "Database connection failed: $databaseConnection->connect_error";
    }
    else
    {
        $search_text = $search_text."%";
        $query = "SELECT DISTINCT street FROM gritroutes WHERE street LIKE ? LIMIT 5";
        $statement = $databaseConnection->prepare($query);
        $statement->bind_param('s', $search_text);
        $statement->execute();
        $statement->store_result();
        $statement->bind_result($street);
        $autonumber = 1;
         while ($statement->fetch())
         {          
             $resultarr[] = $street;
         }
         $statement->close();
         echo json_encode($resultarr);
    }

只是要清楚。我正在编写一个 Windows 应用商店应用程序,System.Web 命名空间不可用,所以我不能使用 JavaScriptSerializer。

4

3 回答 3

3

只是为了添加到 Matthew 的答案,您可以使用Json.NET反序列化(您可以从NuGet获取它),您可以执行以下操作:

List<string> myStrings = JsonConvert.DeserializeObject<List<string>>(myJson);

这是在:

using Newtonsoft.Json;

查看这篇文章以获取实际示例。

编辑 - 我也想加入这个链接,因为它太棒了。

我希望这有帮助。

于 2013-05-22T02:40:40.037 回答
0

看一下JavaScriptSerializer类。

string myJson = "{blablabla I'm json}";
var serializer = new JavaScriptSerializer();

var myStrings = serializer.Deserialize<List<string>>(myJson);

foreach (var str in myString)
{
    Console.WriteLine(str);
}
于 2013-05-22T00:43:47.377 回答
0

您还可以使用本机Windows.Data.Json类进行解析:

string json = @"[""item1"", ""item2"", ""item3""]";
var array = JsonArray.Parse(json).Select(i => i.GetString()).ToArray();
于 2013-05-22T05:05:21.883 回答