Newtonsoft的反序列化问题

时间:2017-10-25 17:55:40

标签: c# json deserialization

我想将此Json设置为模型,这就是 杰森:[{"dimensions": [ "www "], "metrics ": [{ "values ": [ "2 " ]},{ "values ": [ "0 "]}]}]

并创建此模型以将json反序列化为此模型:

public class ResultModel
{
    public List<string> dimensions { get; set; }
    public List<Metric> metrics { get; set; }
}

public class Metric
{
    public List<string> values { get; set; }
}

并使用Newtonsoft

 var model = Newtonsoft.Json.JsonConvert.DeserializeObject<ResultModel>(json);

但它不起作用并给我这个错误:

  

'无法将当前JSON数组(例如[1,2,3])反序列化为类型“ResultModel”,因为该类型需要JSON对象(例如{“name”:“value”})才能正确反序列化。“ / p>

有什么问题?

2 个答案:

答案 0 :(得分:2)

很容易错过你的JSON真的是数组,即使它只包含一个对象。所以你必须将它反序列化为数组:

Product

答案 1 :(得分:1)

如果你确定最多只有一个型号,你可以这样做:

var model = JsonConvert.DeserializeObject<IEnumerable<ResultModel>>(json).FirstOrDefault();

否则,您应该将其反序列化为模型集合,如评论中所示:

// models is an IEnumerable<ResultModel>
var models = JsonConvert.DeserializeObject<IEnumerable<ResultModel>>(json);