7

如何反序列化此 Json 字符串上的“Items”类部分:

{
"Buddies": {
    "count": 1,
    "items": [
        {
            "id": "5099207ee4b0cfbb6a2bd4ec",
            "firstName": "Foo",
            "lastName": "Bar",
            "image": {
                  "url": "",
                    "sizes": [
                        60,
                        120,
                        180,
                        240,
                        360
                    ],
                    "name": "myphoto.png"
                }
            }
        ]
    }
}

我原来的课程是:

public class Buddy 
{
   public IEnumerable<Item> Items { get; set; }
   public class Item {
       public string Id { get; set; }
       public string FirstName { get; set; }
       public string LastName { get; set; }
   }
}

但是 json 的上半部分对我来说毫无用处,我想改用这个类:

public class Buddy 
{
       public string Id { get; set; }
       public string FirstName { get; set; }
       public string LastName { get; set; }       
}
4

4 回答 4

9

这是一种使用JSONPath的方法,假设您的 JSON 在名为的变量中json

var buddies = JObject.Parse(json).SelectToken("$.Buddies.items").ToObject<Buddy[]>();
于 2016-08-06T21:10:46.517 回答
4

我不知道开箱即用的解决方案(如果有的话),但是是什么阻止了您编写类似于下图所示的几行代码来构建新集合:

var obj = JsonConvert.DeserializeObject<dynamic>(jsonstring);
var items = new List<Buddy>();
foreach (var x in obj.Buddies.items)
{
    items.Add(new Buddy
                  {
                      Id = x.id,
                      FirstName = x.firstName,
                      LastName = x.lastName
                  });
}
于 2012-11-25T13:06:47.333 回答
0

创建JsonConverter一个可以循环遍历属性及其值并创建所需对象的对象。有关更多信息,请参阅在 stackoverflow 中搜索 JsonConverter,例如http://stackoverflow.com/questions/2315570/json-net-how-to-serialize-a-class-using-custom-resolver。我也喜欢 Jaroslaw 的方法

于 2012-11-27T04:38:19.177 回答
0

您可以使用以下代码:

dynamic dictionary = 
(JsonConvert.DeserializeObject <IDictionary<string, object> > (jsonstring) )["Buddies"];

            var response = dictionary.items;

            foreach (var item in response)
            {

                var firstName= item.firstName;

            }

您还可以看到: Parsing a complex JSON result with C#

于 2014-04-14T05:11:34.443 回答