我的JSON来自网址http://192.168.1.50/vantaa/api/place
,看起来像这样
第一个问题是我如何从这个JSON获取数据。我需要在xaml列表页面中绑定它。
{
places: [
{
id: "243",
title: "Abrams ja Husbacka",
latitude: "60.25627906773524",
longitude: "24.842572314971903",
www: ""
},
{
id: "149",
title: "Alkupamaus",
latitude: "60.27657927084334",
longitude: "24.848795039886454",
www: ""
}
]
}
我需要在新的xaml页面中使用以下JSON。为了获得低于JSON,网址将如下http://192.168.1.50/vantaa/api/place/243
例如,有一个显示上述JSON数据的列表页面。一旦用户点击了位置id为243的文本块,它将导航到新页面,然后显示地址id 243的绑定JSON数据,如下所示。 (图像数组是动态的)。
{
id: "243",
title: "test 9 image",
description: "test 9 image",
latitude: "60.80943244516333",
longitude: "26.14554653906248",
www: "",
phone: "",
email: "",
contact_person: "",
address: {
street: "asdf",
postal_code: "12345",
post_office: "Vantaa"
},
images: [
{
id: "100",
filename: "50c95e58b30db1.JPG",
path: "assets/images/"
},
{
id: "101",
filename: "50c95e59207ad2.jpg",
path: "assets/images/"
},
{
id: "102",
filename: "50c95e599076f3.jpg",
path: "assets/images/"
}
]
}
有关此问题的任何建议吗?
ps:我是WP和C#的新手,所以请简单解释一下。
答案 0 :(得分:4)
根据JSON创建对象。例如,Place对象将是:
public class Place
{
public string id {get; set;}
public string title {get; set; }
public string latitude {get; set; }
public string longitude {get; set; }
public string www {get; set;}
}
然后,您可以将JSON转换为可以绑定页面的对象。使用JSONConvert或JavaScriptSerializer
var somewhere = JsonConvert.DeserializeObject<Place>(json);
JSONConvert来自JSON.NET,是一个非常成熟的Json库。您也可以使用NuGET包管理器来引用它。
答案 1 :(得分:1)
我会推荐JSON.NET库。您可以通过NuGet包管理器获取它。 (在解决方案资源管理器中右键单击您的解决方案,然后单击“管理NuGet包”)
正如Keifer所说,你可以创建单独的类来解析你的JSON。但是,如果您不想为JSON的每个部分创建一个类,则可以使用dynamic
而不是var
。你还需要下载JSON,但我假设你已经这样做了,除非你需要我,否则我不会过去。
下载JSON后,需要对其进行反序列化。像这样:
我们假设您在下载后将JSON命名为jsonstring
。
dynamic somewhere = JsonConvert.DeserializeObject(jsonstring);
解析JSON并在反序列化后获取列表,您将使用
JObject o = JObject.Parse(jsonstring);
JArray items = (JArray)root["Places"];