【发布时间】:2019-10-07 14:00:15
【问题描述】:
我有 JSON 文件,例如:
{
"50": {
"docid": "5611",
"code": "ГОСТ 11529-2016",
"name": "Материалы поливинилхлоридные для полов. Методы контроля",
"type_id": "6",
"status": "0"
},
"51": {
"docid": "509",
"code": "ГОСТ 11583-74",
"name": "Материалы полимерные строительные отделочные. Методы определения цветоустойчивости под воздействием света, равномерности окраски и светлоты",
"type_id": "6",
"status": "0"
},
...................................................................................
"4000": {
"docid": "5611",
"code": "ГОСТ 11529-2016",
"name": "Материалы поливинилхлоридные для полов. Методы контроля",
"type_id": "6",
"status": "0"
},
}
和代码:
private static void Main(string[] args)
{
using (var r = new StreamReader(@"C:\Users\Admin\Desktop\Json.json"))
{
var json = r.ReadToEnd();
var items = JsonConvert.DeserializeObject<List<UpL>>(json);
foreach(var item in items)
{
foreach (var i in item)
{
Console.WriteLine(i.name);
}
}
}
}
public class UpL
{
public Item item { get; set; }
}
public class Item
{
[JsonProperty("docid")] public string docid;
[JsonProperty("code")] public string code;
[JsonProperty("name")] public string name;
[JsonProperty("status")] public string status;
[JsonProperty("type_id")] public string type_id;
}
错误:类型对象不能在 foreach 语句中使用。
应该在代码中重写什么以避免此错误。 如何正确解析这个 JSON? 我需要从 Item 类中获取所有项目。
【问题讨论】:
-
调试器中的项目是什么类型的?
-
这是因为它不是
List<UpL>,而是Dictionary<string, UpL> -
@ChetanRanpariya 他的课程很好,只是反序列化不正确。
-
是的......你是对的@ThePerplexedOne
-
Dictionary
给出错误:Newtonsoft.Json.JsonSerializationException - 无法反序列化当前 JSON 数组