禁止 JSON 中的单引号值
Disallow single quoted values in JSON
我正在解析一个 Json 文件,该文件应根据 json 的正式规范进行格式化,其中不包括将键和值括在单引号 (') 中的可能性.但是,使用 org.json
或 gson
,实现正在接受这些条目并成功地将文件转换为 JsonObject
。我需要它失败(我的流程中有第二次验证不允许单引号)。
我一直在研究配置解析器以使它们失败的方法。我读过 Jackson
的 JsonParser
默认情况下不允许这样做,然后可以明确更改它。我可以对前面提到的库之一做同样的事情,还是应该改用 Jackson
?
谢谢!
org.json
是开源的,因此您可以构建一个不允许单引号字符串文字的修改版本。
在JSONTokener
class中修改nextValue()
方法
public Object nextValue() throws JSONException {
char c = this.nextClean();
String string;
switch (c) {
case '"':
case '\'': // ← ← ← ← ← ← ← ← ← ← ← ← REMOVE OR COMMENT THIS LINE
return this.nextString(c);
case '{':
this.back();
return new JSONObject(this);
case '[':
this.back();
return new JSONArray(this);
}
...
我正在解析一个 Json 文件,该文件应根据 json 的正式规范进行格式化,其中不包括将键和值括在单引号 (') 中的可能性.但是,使用 org.json
或 gson
,实现正在接受这些条目并成功地将文件转换为 JsonObject
。我需要它失败(我的流程中有第二次验证不允许单引号)。
我一直在研究配置解析器以使它们失败的方法。我读过 Jackson
的 JsonParser
默认情况下不允许这样做,然后可以明确更改它。我可以对前面提到的库之一做同样的事情,还是应该改用 Jackson
?
谢谢!
org.json
是开源的,因此您可以构建一个不允许单引号字符串文字的修改版本。
在JSONTokener
class中修改nextValue()
方法
public Object nextValue() throws JSONException {
char c = this.nextClean();
String string;
switch (c) {
case '"':
case '\'': // ← ← ← ← ← ← ← ← ← ← ← ← REMOVE OR COMMENT THIS LINE
return this.nextString(c);
case '{':
this.back();
return new JSONObject(this);
case '[':
this.back();
return new JSONArray(this);
}
...