我正试图使一个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();