Xml将动态字符串序列化为布尔值

时间:2015-07-02 08:10:17

标签: c# json xml

下面是一个简单的作业调度程序实例,它将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行抛出异常:

  1. 无法使用XMLConvert.ToBoolean

  2. 将字符串转换为布尔值
  3. 无法识别Convert.ToBoolean

  4. 的字符串

    在这种情况下,其他类型的转换可能会出现吗?预期结果应为:

    JSON

    [
        {
            "Name": "facebook",
            "Active": false
        }
    ]
    

1 个答案:

答案 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将所有属性公开为字符串(作为执行时类型)。