【发布时间】:2020-07-06 14:53:32
【问题描述】:
我正在尝试手动解析 json 中的字符串。这就是我的 json 的样子
{{
"dbViews": [
{
"viewID": 0,
"viewColumns": [
{
"dbTitle": "ColNmid",
"viewTitle": "string",
"activated": true,
"activatedLabel": "Afficher"
},
{
"dbTitle": "ColNmdelete",
"viewTitle": "string",
"activated": true,
"activatedLabel": "Afficher"
}
]
}
],
"AddViewName": "test"
}}
这就是我试图阅读它的方式。
UserViewDto User = new UserViewDto();
dynamic obj = JObject.Parse(json);
User.id = obj.dbViews.viewID;
User.viewName = obj.AddViewName;
foreach (var item in obj.viewColumns)
{
if (obj.dbTitle == "ColNmid")
{
User.ColNmid = obj.viewTitle;
}
}
我只能读取 addViewName,我似乎无法访问 viewID 或 viewColumn。
更新:
在 cmets 之后,我显然错过了第二个数组。这是我的新代码女巫工作
UserViewDto User = new UserViewDto();
dynamic obj = JObject.Parse(json);
User.viewName = obj.AddViewName;
foreach (var view in obj.dbViews)
{
User.id = view.viewID;
foreach (var item in view.viewColumns)
{
if (item.dbTitle == "ColNmid")
{
User.ColNmid = item.viewTitle;
}
}
}
【问题讨论】:
-
这不是有效的 json 并且 dbviews 是一个数组。
-
dbViews是数组,而不是对象。另外,为什么不JsonConvert.DeserializeObject<UserViewDto>();或其他与您的 json 匹配的模型? -
请阅读How to Ask。 “我似乎无法访问 viewID 或 viewColumn” 是什么意思,究竟会发生什么?
-
是的,
foreach()可以,但您需要另一个。正如@Guru 所说,dbViews本身也是一个数组。 -
witch [原文如此] 我不想写 让 Visual Studio 为您完成 编辑 菜单 -> 选择性粘贴 -> 将 Json 粘贴为类
标签: c# json asp.net-mvc