首页 > 解决方案 > 不允许 JSON 中的单引号值

问题描述

我正在解析一个 Json 文件,该文件应根据 json 的正式规范进行格式化,其中不包括将键和值包含在单引号 (') 中的可能性。但是,使用org.jsongson,实现将接受这些条目并成功地将文件转换为JsonObject. 我需要它失败(我的流程中有第二个验证不允许单引号)。

我一直在研究配置解析器以使其失败的方法。我读过默认情况下不允许这样做,然后有可能显式更改它JacksonJsonParser我可以对前面提到的库之一做同样的事情,还是应该Jackson改用?

谢谢!

标签: javajsonjacksongson

解决方案


org.json是开源的,因此您可以构建一个不允许单引号字符串文字的修改版本。

JSONTokener类中,修改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);
    }
    
    ...

推荐阅读