【问题标题】:how to deserialize json object with arrays in it c#如何反序列化带有数组的json对象c#
【发布时间】:2020-10-05 12:16:30
【问题描述】:

我的对象是这样的

{"Items":[{number:8468},{}],

 "count":2}

我需要以项目 1 的数量为例

我的代码是这样的,但它不起作用

var content = await response.Content.ReadAsStringAsync();
var myObject = JsonConvert.DeserializeObject<ICollection<ViewModel>>(content);

【问题讨论】:

标签: c#


【解决方案1】:

这里的JSON代表一个对象,而不是一个集合——也就是说:外层节点是{},而不是[]。因此,创建一个反映以下内容的类型:

public class Foo {
    public List<Bar> Items {get;} = new List<Bar>();
    [JsonProperty("count")]
    public int Count {get;set;}
}
public class Bar {
    [JsonProperty("number")]
    public int Number {get;set;}
}

并使用:

var myObject = JsonConvert.DeserializeObject<Foo>(content);

【讨论】:

    【解决方案2】:

    这里你有一个 json 对象而不是 json 数组。所以你的逻辑是失败的。所以首先创建一个这样的模型:

    public class Response {
    
        public List<Item> Items {get;set;} = new List<Item>();
        public int Count {get;set;}
    }
    
    public class Item {
        public int Number {get;set;}
    }
    

    并替换:

    var myObject = JsonConvert.DeserializeObject<ICollection<ViewModel>>(content);
    

    var result = JsonConvert.DeserializeObject<Response>(content);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多