使用json数组的DeserializeObject问题

时间:2014-06-05 09:59:27

标签: c# arrays json object serialization

所以我有一个带有json数组的DeserializeObject的问题,我无法在这里找到我做错的事情:

{"name":"Pannbiff n\u00f6tf\u00e4rs stekt","number":1128,"nutrientValues":
  {"energyKj":694,"energyKcal":166,"protein":17.2,"fat":7.6,"carbohydrates":7}}

我的模型看起来像这样:

我的代码如下:

var responseText = streamReader.ReadToEnd(); var jsonSerializer = JsonConvert.DeserializeObject(responseText);

public class Asware
{
    public IEnumerable<NutrientValues> nutrientValues { get; set; }

}

public class NutrientValues
{
    public int energyKcal { get; set; }
    public double protein { get; set; }
    public double carbohydrates { get; set; }
    public int fat { get; set; }
}

public class Asware { public IEnumerable<NutrientValues> nutrientValues { get; set; } } public class NutrientValues { public int energyKcal { get; set; } public double protein { get; set; } public double carbohydrates { get; set; } public int fat { get; set; } }

在这里我看不出有什么问题我也试过了: JsonConvert.DeserializeObject&GT;(responseText的)

1 个答案:

答案 0 :(得分:0)

问题在于,在源JSON中,nutrientValues是单个对象,而不是对象数组。

如果您按如下方式更改模型,则应正确序列化:

public class Asware { public NutrientValues nutrientValues { get; set; } }

或者,如果你控制了JSON,那么你可以修改它以包含一系列营养素,如下所示,[ ]个字符表示多个项目。

{"name":"Pannbiff n\u00f6tf\u00e4rs stekt","number":1128,"nutrientValues": [{"energyKj":694,"energyKcal":166,"protein":17.2,"fat":7.6,"carbohydrates":7}]}