1

ルート要素「users」と「user」アイテムのリストを含むJSONファイルを受け取りました。

Listjsonをと呼ばれるカスタムクラスのに逆シリアル化しようとしていますが、それをカバーできないUserという、を取得し続けます。JsonSerializationException

私は次のことを試しました:

コード:

 public class User
{
    public int ID { get; set; }
    public bool Active { get; set; }
    public string Name { get; set; }
}

public class Response
{
    public List<User> Users { get; set; }
    public JObject Exception { get; set; }
}

と -

public Response DeserializeJSON(string json)
    {
        Response deserialized = JsonConvert.DeserializeObject<Response>(json);
        return deserialized;
    }

JSON:

    {
  "Users": {
        "User": [
          {
            "id": "1",
            "active": "true",
            "name": "Avi"
          },
          {
            "id": "2",
            "active": "false",
            "name": "Shira"
          },
          {
            "id": "3",
            "active": "false",
            "name": "Moshe"
          },
          {
            "id": "4",
            "active": "false",
            "name": "Kobi"
          },
          {
            "id": "5",
            "active": "true",
            "name": "Yael"
          }
        ]
      }
}

スタイリング不良でごめんなさい!!

4

2 に答える 2

0

Response クラスで、コンストラクターでコレクションを初期化してみてください。

public class Response
{
    public Response()
    {
        Users = new List<User>();
    }
    public IEnumerable<User> Users { get; set; }
    public JObject Exception { get; set; }
}
于 2012-06-17T13:55:55.037 に答える
0

ああ、JSONをもっとよく読み始める必要があります... :)私の問題は、このJSON文字列に実際に2つの「ラッパー」があることでした:

ルート要素は「Users」で、「User」という要素を保持していました。これで修正されました:

public class User
{
    public int id { get; set; }
    public bool active { get; set; }
    public string name { get; set; }
}

public class Response
{
    public ResponseContent users { get; set; }
}

public class ResponseContent
{
    public List<User> user;
}

ありがとう!:)

于 2012-06-18T12:22:20.043 に答える