7
JObject.Parse(jsonString)对布尔数据造成问题。例如JSON的是:Json.Net布尔分析问题
{
"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(布尔型):真
的情况下灵敏度的原因因为我保存了这个json以备后用。保存的JSON看起来像
{
"BoolParam": True
}
然而,当我后来用它,在JObject.Parse(STR)抛出错误无效JSON:在解析值意外字符遇到:T.路径“BoolParam”,2号线,位置15.
如果我将案例从“True”更改为“true”,它可以工作。我不想在保存时添加这个黑客来改变情况,但有没有更好的方法来处理这种情况。
我知道我必须保存一个有效的json。引起问题的事情是当我解析我得到的值为“真”,但有效的JSON字符串预计“真”。所以想知道有没有办法解析它为“true” – surya
@surya如果你的JSON包含'True',那么它是无效的JSON;就这么简单。 '真'标记必须全部小写。请参阅[JSON规范]的第2.1节(http://www.ietf.org/rfc/rfc4627.txt?number=4627)。正如Darin所说,如果您希望解析器能够正确读取它,您需要修复保存JSON的方式。 –
我添加了修复程序,但我想我以前没有解释..它不是我谁将布尔值更改为“True”,但Json.net分析器。具体来说,此行为布尔值返回“True”:JToken value = x.Value; string val =(value.ToString()); json是{“Bool”:“true”} – surya