Json.Net布尔解析问题

时间:2013-09-25 16:54:58

标签: json json.net

JObject.Parse(jsonString)导致布尔数据问题。例如json是:

{
    "BoolParam": true
}

我使用以下代码进行解析:

JObject data = JObject.Parse(str1);
foreach (var x in data)
{
  string name = x.Key;
  Console.Write(name + " (");
  JToken value = x.Value;
  Console.Write(value.Type + ")\n");
  Console.WriteLine(value);
}

这打印出的值为: BoolParam(布尔): True

区分大小写导致问题,因为我保存此json以供以后使用。保存的json看起来像

{
    "BoolParam": True
}

然而,当我后来使用它时,JObject.Parse(str)抛出错误为无效Json:解析值时遇到意外字符:T。路径'BoolParam',第2行,第15位。

如果我将案例从“True”更改为“true”,则可行。我不想在保存时添加这个hack来改变这种情况,但有更好的方法来处理这种情况。

2 个答案:

答案 0 :(得分:7)

  

我不想添加这个黑客来改变保存的情况,但是   有更好的方法来处理这种情况。

不,如果您希望以后能够使用JSON序列化程序(如Newtonsoft JSON)对其进行反序列化,则必须在保存时生成有效的JSON。因此,修复保存路由是正确的方法。

答案 1 :(得分:0)

可以使用匿名类型,不用担心布尔类型变量的大小写敏感

public static void Main()
{
    bool a = true;
    JObject c = JObject.FromObject(new {BoolParam= a});
    Console.WriteLine(c);   
}

输出:

{
  "BoolParam": true
}