2017-05-18 20 views
0

問題

JSONをC#ディクショナリに逆シリアル化するにはどうすればよいですか? HERESに私のJSONオブジェクト

{ 
    "1000":{ 
       "id": "23445", 
       "latlon": "6780" 
      }, 
    "1001":{ 
       "id": "23454", 
       "latlon": "6784" 
      }, 
    "1002":{ 
       "id": "23245", 
       "latlon": "6180" 
      }, 
    "1003":{ 
       "id": "12345", 
       "latlon": "6740" 
      } 
} 

あなたはプロパティ名は、純粋な整数(1000年、1001年、1002年、1003年)

ある見ることができるように私はクラス変数名を宣言することはできませんIntegarで実行し、System.json.Serializationを実行します。

そこで私はにJSONファイルをロードする必要があります。

public static Dictionary<int, NodeDetail> NodeInfo; 

public class NodeDetail { 
    public ulong id; 
    public int latlon; 

    //Generic class serializer 

    //Generic class deserializer 
} 

は、このためのライブラリ関数はありますか?またはJSON文字列を根本から解析する必要がありますか?

ps。私はC#の新機能です(C++から来ています)

+2

[NewtonsoftのJSONライブラリを使用](https://www.nuget.org/packages/newtonsoft.json/)。ドキュメントは豊富で、ここや他の場所にあります。悲しいことに、私たちのパーサーを書く時代は過ぎました。 –

+0

だから私はちょうどこのhttp://www.newtonsoft.com/json/help/html/DeserializeDictionary.htmにadove JSONファイルを送りますか? –

答えて

2

Newtonsoft.Json。あなたはNuGetからそれを引き出すことができます。

簡単な例:

public static T DeserializeJson<T>(string json) 
{ 
    return JsonConvert.DeserializeObject<T>(json); 
} 

、その後

Dictionary<string, object> foo = DeserializeJson<Dictionary<string, object>>(" ... insert JSON here ... "); 

EDIT:あなたは、ネストされた辞書の中にデシリアライズすることができます、あなたの質問に言及した構造を、与えられた:

Dictionary<int, Dictionary<long, int>> foo = DeserializeJson<Dictionary<int, Dictionary<long, int>>>(" ... insert JSON here ..."); 

また、(同じNewtonsoft.Jsonライブラリ内にある)JObjectもあります。これは、デシリアライズに非常に役立ちます使用できる均一なもの。

関連する問題