禁用阅读支持(无效JSON)单引号字符串

时间:2018-01-13 01:51:25

标签: c# json.net

用于C#的Newtonsoft.Json支持读取{'key':'value'}之类的东西,但那是不正确的JSON。有可能禁用它,因此它解析和读取更像PHP(其中PHP不支持{'key':'value'}但是{“key”:“value”})

1 个答案:

答案 0 :(得分:16)

您可以编写自己的JsonReader子类来执行此操作,但JsonTextReader类(最常用的一类,据我所知)并不适用支持这个。从ParseValue方法,例如:

case '"':
case '\'':
    ParseString(currentChar, ReadType.Read);
    return true;

我在Google.Protobuf中有strict JSON tokenizer - 它是内部的,但是应该让你知道自己编写这样的标记器并不是非常棘手。当然,如果你真的想要使用Json.NET而不是严格,那对你没有帮助。

您可能希望在Json.NET仓库中阅读并可能对issue 646进行投票/评论,我在那里请求了严格模式"同样。 (那里有一个建议的替代方法 - 虽然感觉有点像黑客。)