如何使用与Windows Store应用程序兼容的命名空间将JSON字符串转换为本机c#数组?


How do i convert a JSON string to a native C# array using a namespace compatible with Windows Store Apps?

我正试图使一个windows 8商店应用程序,从一个PHP页面作为REST服务从MySQL数据库获得结果。

我正在寻找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商店应用程序,系统。Web Namespace不可用,所以我不能使用JavaScriptSerializer

为了补充Matthew的答案,您可以使用Json进行反序列化。. NET(您可以从NuGet获取),您可以这样做:

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

这是在:

using Newtonsoft.Json;

查看这篇文章中的实际示例。

编辑-我也想扔在这个链接,因为它只是太棒了。

看一下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);
}

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

string json = @"[""item1"", ""item2"", ""item3""]";
var array = JsonArray.Parse(json).Select(i => i.GetString()).ToArray();