Json.Net布尔解析问题

sur*_*rya 11 json json.net

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

{
    "BoolParam": true
}
Run Code Online (Sandbox Code Playgroud)

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

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);
}
Run Code Online (Sandbox Code Playgroud)

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

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

{
    "BoolParam": True
}
Run Code Online (Sandbox Code Playgroud)

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

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

Dar*_*rov 7

我不想在保存时添加这个hack来改变这种情况,但有更好的方法来处理这种情况.

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

  • 我添加了修复程序,但我想我之前没有解释过..不是我将布尔值更改为“True”而是 Json.net 解析器。具体而言,此行为布尔值返回“True”:JToken value = x.Value; 字符串 val = (value.ToString()); json 是 { "Bool" : "true"} (2认同)