0

我的 JSON 来自 url 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,url 看起来像这样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#的新手,所以请简单解释一下。

4

2 回答 2

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 包管理器引用它。

于 2013-01-04T05:56:24.013 回答
1

我会推荐 JSON.NET 库。您可以通过 NuGet 包管理器获取它。(在解决方案资源管理器中右键单击您的解决方案,然后单击管理 NuGet 包)

正如 Keifer 所说,您可以创建单独的类来解析 JSON。但是,如果您不希望 JSON 的每个部分都有一个类,则可以dynamic使用var. 您还需要下载 JSON,但我假设您已经这样做了,除非您需要我,否则我不会详细说明。

下载 JSON 后,您需要对其进行反序列化。像这样:我们假设您jsonstring在下载后将 JSON 命名为。

dynamic somewhere = JsonConvert.DeserializeObject(jsonstring);

解析 JSON 并在反序列化后获取列表,您将使用

JObject o = JObject.Parse(jsonstring);
JArray items = (JArray)root["Places"];
于 2013-01-04T07:43:08.180 回答