无法将JSON数组(例如[1,2,3])反序列化为类型' '因为类型需要JSON对象(例如{“name”:“value”})

时间:2017-07-21 14:20:02

标签: c# json xamarin

我以下列格式返回JSON:

{
"Items": [
    {
        "unique_id": "11111111111",
        "rages": {
            "rage_content": "Hello rage 2",
            "date_stamp": "21/07/2017",
            "id": 2
        }
    },
    {
        "unique_id": "2222222222",
        "rages": {
            "rage_content": "Hello rage 1",
            "date_stamp": "21/07/2017",
            "id": 1
        }
    }
],
"Count": 2,
"ScannedCount": 2
}

我定义了以下2个类:

Items.cs

namespace ragevent_A0._0._1
{
    class Items
    {
        public String rage_id { get; set; }
        public rage rage { get; set; }

    }
}

rage.cs

class rage
{
    public String rage_content { get; set; }
    public String date_stamp { get; set; }
    public int id { get; set; }
}

我正在使用以下代码来尝试解除上面返回的JSON:

List<Items> data = JsonConvert.DeserializeObject<List<Items>>(json);

但是,由于上述错误,我无法成功反序列化数据。我已经在线尝试了一些解决方案,但是我还没有设法找到一个与我返回的JSON格式一致的解决方案。我使用了JSON格式化程序并且格式正确,因此不应该成为问题。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

对于下面发布的JSON数据,应该是您需要的模型(信用:http://json2csharp.com/)。属性名称pathlib.Path.resolve()之间存在不匹配。您可以使用rage_id属性

JsonProperty

您的反序列化应该是

public class Rages
{
    public string rage_content { get; set; }
    public string date_stamp { get; set; }
    public int id { get; set; }
}

public class Item
{
    [JsonProperty(Name="rage_id")]
    public string unique_id { get; set; }
    public Rages rages { get; set; }
}

public class RootObject
{
    public List<Item> Items { get; set; }
    public int Count { get; set; }
    public int ScannedCount { get; set; }
}