1

Json.NET を使用して、次の JSON を逆シリアル化しています。

[
    {
        "id": 1234,
        "name": "Example",
        "coords": "[12:34]",
        "relationship": "ownCity"
    },
    {
        "id": 53,
        "name": "Another example",
        "coords": "[98:76]",
        "relationship": "ownCity"
    }
]

リストに解析しようとしています。

List<City> cities = JsonConvert.DeserializeObject<List<City>>(json);

City クラスの定義:

public class City
{
    int id { get; set; }
    string name { get; set; }
    string coords { get; set; }
    string relationship { get; set; }
}

結果は 2 つの City オブジェクトのリストになりますが、それらのプロパティはすべて null (id は 0) です。

誰かが私が間違っていることを教えてくれますか? 前もって感謝します。

4

2 に答える 2

3

フィールドはすべて (デフォルトで) 非公開としてマークされています。それらを public または protected に変更すると、正常に動作するはずです。

public class City
{
   public int id { get; set; }
   public string name { get; set; }
   public string coords { get; set; }
   public string relationship { get; set; }
}
于 2013-06-04T11:43:18.737 に答える
1

それはあなたのために働くでしょう

  • パブリック アクセス レベルを追加する必要があります

入れ子になったクラスと構造体を含む、クラス メンバーと構造体メンバーのアクセス レベルは、既定ではプライベートです。

  • または、クラスに DataContractAttribute を、シリアル化するメンバーに DataMemberAttribute 属性が必要です。[DataMember] がない場合と同様に、非公開のプロパティまたはフィールドをシリアル化することはできません

[DataContract] public class City {

 [DataMember]
public int id { get; set; }

  [DataMember]
  public string name { get; set; }

  [DataMember]
  public string coords { get; set; }

  [DataMember]
  public string relationship { get; set; }
}
于 2013-06-04T11:50:20.753 に答える