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

JSON が という名前の変数にあると仮定して、JSONPathを使用したアプローチを次に示し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

次のコードを使用できます。

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

            var response = dictionary.items;

            foreach (var item in response)
            {

                var firstName= item.firstName;

            }

また、次のことも確認できます: C# を使用した複雑な JSON 結果の解析

于 2014-04-14T05:11:34.443 に答える
0

JsonConverterプロパティとその値をループして目的のオブジェクトを作成できる を作成します。詳細については、http://stackoverflow.com/questions/2315570/json-net-how-to-serialize-a-class-using-custom-resolver などの JsonConverter の stackoverflow での検索を参照してください。ヤロスワフのアプローチも好きだった

于 2012-11-27T04:38:19.177 に答える