0

私のものではないため、変更できないJsonサービスがあります。彼らの Json は、解析が困難な方法でフォーマットされています。こんな感じです。

"people": {
     "Joe Bob": {
              "name": "Joe Bob",
              "id": "12345"
     },
     "Bob Smith": {
              "name": "Bob Smith",
              "id": "54321"
     }
 },

これが JSON 配列のようにレイアウトされていることを本当に望んでいますが、現在はそうではありません。ここで最善のアプローチを考えています。Json を解析する前に配列のように変更するか、ExtensionData をロードしてそこから解析する必要がありますか?

フィードには他にも問題のない項目があります。この1つのセクションにこだわっただけです。

ありがとう

4

1 に答える 1

0

json.net を使用してデータを逆シリアル化できます (貼り付けた json を、何も変更せずに 1 回だけ解析します)。

thanを使用するdynamic foo = JsonConvert.DeserializeObject<dynamic>(data) と、 を使用してリストを反復処理しfoo.people、名前と値にアクセスできます。

クラスを作成できます(スキーマが何であるかを知っていて、データを次のような特定のクラスのリストに逆シリアル化する場合)。

    public class People
    {
        [JsonProperty(PropertyName="people")]
        public IDictionary<string, Person> Persons { get; set; }
    }

    public class Person
    {
        [JsonProperty(PropertyName="name")]
        public string Name { get; set; }

        [JsonProperty(PropertyName = "id")]
        public string Id { get; set; }
    }

そして呼び出すより:

var obj = JsonConvert.DeserializeObject<People>(data);
foreach (var item in obj.Persons.Values)
{
      //item is instance of Person      
}

別の適切で可能なオプションは次のとおり です。C#で任意のJSONツリーをナビゲートするにはどうすればよいですか?

于 2013-04-02T22:03:11.330 に答える