下面是一个简单的作业调度程序实例,它将xml动态字符串解析为json:
XML
<Navigations>
<Navigation Name="facebook" Active ="0" ></Navigation>
</Navigations>
c#中
List<NavigationData> nds = new List<NavigationData>();
foreach (object cnav in (IEnumerable)c.Navigations)
{
NavigationData nd = new NavigationData();
nd.Name = (string)((dynamic)cnav).Name;
nd.Active = XmlConvert.ToBoolean((string)((dynamic)cnav).Active); // 3
nds.Add(nd);
}
transitContent.NavigationData = JsonConvert.SerializeObject(nds);
上述程序在第3行抛出异常:
无法使用XMLConvert.ToBoolean
无法识别Convert.ToBoolean
在这种情况下,其他类型的转换可能会出现吗?预期结果应为:
JSON
[
{
"Name": "facebook",
"Active": false
}
]
答案 0 :(得分:1)
是的,&#34; 0&#34;不是布尔值的有效值。听起来你可能想要这样的东西:
List<NavigationData> nds = new List<NavigationData>();
foreach (dynamic cnav in (IEnumerable)c.Navigations)
{
NavigationData nd = new NavigationData();
nd.Name = cnav.Name;
nd.Active = cnav.Active != "0";
nds.Add(nd);
}
transitContent.NavigationData = JsonConvert.SerializeObject(nds);
这假设cnav
将所有属性公开为字符串(作为执行时类型)。