【发布时间】:2019-07-17 15:43:17
【问题描述】:
我有这个 JSON
{
name: 'Dashboard',
url: '/Home',
icon: 'icon-speedometer',
},
{
name: 'Reports',
url: '/Reports/GenerateReport',
icon: 'icon-calculator'
},
{
name: 'Administration',
url: '/adminstration',
icon: 'icon-shield',
children: [
{
name: 'Templates',
url: '/Templates/TemplatesList',
// icon: 'icon-settings'
},
{
name: 'Rules',
url: '/Rules/RulesList',
// icon: 'icon-equalizer'
},
{
name: 'Products',
url: '/Products/ProductsList',
// icon: 'icon-grid'
},
{
name: 'Users',
url: '/Users/UsersList'
},
{
name: 'Clients',
url: '/Clients/ClientsList'
}
在 C# 中,这是映射它的模型
public class ParsedAccessPage
{
public int Id { get; set; }
public string name { get; set; }
public string url { get; set; }
public string icon { get; set; }
public List<ParsedAccessPageChild> children { get; set; }
}
public class ParsedAccessPageChild
{
public int Id { get; set; }
public string name { get; set; }
public string url { get; set; }
public int ParentId { get; set; }
}
这个函数将模型解析为 JSON
StringBuilder sb = new StringBuilder();
JsonWriter jw = new JsonTextWriter(new StringWriter(sb));
jw.Formatting = Formatting.Indented;
jw.WriteStartObject();
foreach (var page in parsedAccessPage)
{
jw.WriteStartObject();
jw.WritePropertyName("name");
jw.WriteValue(page.name);
jw.WritePropertyName("url");
jw.WriteValue(page.url);
jw.WritePropertyName("icon");
jw.WriteValue(page.icon);
if (page.children.Count > 0)
{
jw.WritePropertyName("children");
jw.WriteStartObject();
foreach (var child in page.children)
{
jw.WritePropertyName("name");
jw.WriteValue(child.name);
jw.WritePropertyName("url");
jw.WriteValue(child.url);
//jw.WriteEndArray();
}
jw.WriteEndObject();
}
jw.WriteEndObject();
//jw.WriteEndArray();
}
jw.WriteEndObject();
return sb.ToString();
我不断收到此错误:
“处于 ObjectStart 状态的令牌 StartObject 将导致无效的 JSON 对象。路径 ''。”
我不确定为什么第一个 foreach 中的第一行一直在抛出它...我试图让 json 显示为模型。
【问题讨论】: