繁体   English   中英

如何使用与Windows应用商店应用兼容的命名空间将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数据库的MySQL数据库的结果作为REST服务。

我正在寻找PHP来返回一个字符串数组的JSON表示,并且当Javascript和PHP之间相同时,我已经很愉快地完成了。 我需要使用相同的JSON字符串并在我的C#Windows 8商店App中使用它,有没有办法获取该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。

只是为了补充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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM