将JSON字符串转换为.Net模型

时间:2016-01-28 23:03:38

标签: c# json

我正在尝试将返回给我的JSON字符串映射到我拥有的.Net模型类中。 JSON将是包含任意数量结果的数组,我想从此方法返回List<MyObject>

JSON看起来像这样:

{
  "artists" : {
    "href" : "https://api.spotify.com/v1/search?query=tania+bowra&offset=0&limit=20&type=artist",
    "items" : [ {
      "external_urls" : {
        "spotify" : "https://open.spotify.com/artist/08td7MxkoHQkXnWAYD8d6Q"
      },
      "followers" : {
        "href" : null,
        "total" : 26
      },
      "genres" : [ ],
      "href" : "https://api.spotify.com/v1/artists/08td7MxkoHQkXnWAYD8d6Q",
      "id" : "08td7MxkoHQkXnWAYD8d6Q",
      "images" : [ {
        "height" : 640,
        "url" : "https://i.scdn.co/image/f2798ddab0c7b76dc2d270b65c4f67ddef7f6718",
        "width" : 640
      }, {
        "height" : 300,
        "url" : "https://i.scdn.co/image/b414091165ea0f4172089c2fc67bb35aa37cfc55",
        "width" : 300
      }, {
        "height" : 64,
        "url" : "https://i.scdn.co/image/8522fc78be4bf4e83fea8e67bb742e7d3dfe21b4",
        "width" : 64
      } ],
      "name" : "Tania Bowra",
      "popularity" : 2,
      "type" : "artist",
      "uri" : "spotify:artist:08td7MxkoHQkXnWAYD8d6Q"
    } ],
    "limit" : 20,
    "next" : null,
    "offset" : 0,
    "previous" : null,
    "total" : 1
  }
}

我正在尝试使用Json.Net ......所以我开始:

JObject jsonArtists = JObject.Parse(content);

这是我被困的地方。我尝试了使用JArray的不同方法,但我不确定我需要在这里使用什么语法,以及Json.Net将要处理多少提升而不必写出所有各种属性映射。

在这种情况下,我有兴趣从JSON中的items集合中获取数组,并将其转换为List<MyObject>

3 个答案:

答案 0 :(得分:0)

示例中的JSON是单个对象({...}),而不是列表([...])。

您可以使用JsonConvert.DeserializeObject<MyObject>(json)直接进入模型。或JsonConvert.DeserializeObject<List<MyObject>>(json)如果json包含列表定义。

答案 1 :(得分:0)

答案 2 :(得分:0)

我使用以下解决方案直接跳转到数组,然后尝试序列化到我的对象中。它有效。

    var jsonArtists = JObject
        .Parse(content)
        .SelectToken("artists.items")
        .ToObject<List<MyObject>>();