2017-07-01 4 views
1

だから私はこの形式でJSON形式のリストを持っている:あなたが見るようにJSONリストをどのようにデシリアライズするのですか?すべてのアイテムにノードがありますか?

friendships 
    14349334 
    following=false 
    follows=false 
    12323445 
    following=false 
    follows=false 
    542545 
    following=false 
    follows=false 
    ... 

それは不正な形式ですが、それらはユーザーIDで分離されています。 ListFriendshipの場合は、事前定義されたクラスを使用してJson.NETを使用することができましたが、今は不可能です。

すべてのアイテムが自分のノードを持っているリストをどのように逆シリアル化するのですか?

{ "友人":{ "904667009" は:{ "次の":偽、 "次":偽}、 "918386564":{ "次の":真、 "次":偽}、 " 898262788 ": {" 次 ":偽、 "" 次の:偽}}}

+0

可能な重複を掲載するもので匿名クラスを入れ替えることができキー](https://stackoverflow.com/questions/13517792/deserializing-json-with-dynamic-keys) –

答えて

1

辞書を使用するには、あなたがIDSを処理できるようにする必要があります。ここで

public class Friendship { 
    public bool following { get; set; } 
    public bool follows { get; set; } 
} 

public class RootObject { 
    public Dictionary<string, Friendship> Friendships friendships { get; set; } 
} 
1

は匿名クラスを使用してJSONをデシリアライズする例を示します。

var json = "{ \"friendships\": { \"904667009\": { \"following\": false, \"follows\": false}, \"918386564\": { \"following\": true, \"follows\": false}, \"898262788\": { \"following\": false, \"follows\": false} } }"; 

var jsonParsed = new JavaScriptSerializer().DeserializeObject(json) as Dictionary<string, object>; 

var friendShips = ((Dictionary<string, object>)jsonParsed["friendships"]).Select(friendShip => 
{ 
    var followData = (Dictionary<string, object>)friendShip.Value; 

    return new 
    { 
     FriendShipID = friendShip.Key, 
     Following = Convert.ToBoolean(followData["following"]), 
     Follows = Convert.ToBoolean(followData["follows"]) 
    }; 
}).ToList(); 

あなたもNkosiが動的に[デシリアライズJSONの

+0

ええ、私は実際に自分自身を使用してJson.NET :) –

関連する問題