12

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 (Boolean) : True

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

{
    "BoolParam": True
}

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

如果我将大小写从“True”更改为“true”,它会起作用。我不想在保存时添加这个技巧来改变大小写,但是有没有更好的方法来处理这种情况。

4

2 回答 2

7

我不想在保存时添加这个技巧来改变大小写,但是有没有更好的方法来处理这种情况。

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

于 2013-09-25T17:03:30.100 回答
0

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

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

输出:

{
  "BoolParam": true
}
于 2021-07-06T10:28:56.053 回答