删除JSONObject中的引号

Spi*_*ams 10 java json

我正在使用net.sf.json.JSONObject创建一些要发送到前端应用程序的数据,而我正在与之交互的代码不喜欢它为每个字段名称添加引号的方式.

例如:

 myString = new JSONObject().put("JSON", "Hello, World!").toString();
Run Code Online (Sandbox Code Playgroud)

生成字符串{"JSON":"Hello,World"}.

我希望它返回的是{JSON:"Hello,World"} - 没有"JSON"的引号.我该怎么做才能实现这一目标?

cat*_*lpa 5

我遇到过一些Web应用程序/库,例如支持JSON的amCharts,如JavaScipt输入,其中您的请求是必需的,因为不支持真正的JSON.

你可以做的是创建一个通用的javascript函数,并使用一点RegEx来过滤JSON.

function CleanJSONQuotesOnKeys(json) {
    return json.replace(/"(\w+)"\s*:/g, '$1:');
}
Run Code Online (Sandbox Code Playgroud)


Tom*_*ito 1

javadoc说

toString 方法生成的文本严格符合 JSON sysntax 规则。

如果要符合 JSON 语法规则,则不应删除引号。

或者,如果您不关心规则,您可以创建自己的简单方法来构造此字符串。

另外,替换引号中第一次出现的 2 个也是有效的,正如 @CharlesLeaf 所说。