0

我需要接受来自用户的字符串并将其按原样放入 JSONObject 中。文档说可以引用字符串,但'很明显我误解了。

这足够还是我错过了什么?

jsonObject.put("name", "'" + userInput + "'");

我逐步完成了该put功能,但它似乎根本不关心字符串!有一个quote函数,但它在字符串周围添加了另一组双引号,这似乎不正确。

4

1 回答 1

2

您似乎在引用Javadoc的这一部分

字符串可以用 ' (单引号)引用。

前面是

这些方法生成的文本toString严格遵守 JSON 语法规则。构造函数在他们将接受的文本中更加宽容

JSON 字符串用双引号括起来"。所以JSONObject#toString将产生一个 JSON 值,其中 JSON 字符串在语法上是正确的。但是,JSONObject构造函数可以接受 JSON 值(作为文本),其中 JSON 字符串用单引号而不是双引号括起来。

例如

JSONObject object = new JSONObject("{'bad':'json'}"); // not valid JSON
System.out.println(object);

产生有效的

{"bad":"json"}

put方法与这里完全无关。您不需要(也不应该)在指定的字符串周围使用单引号。


从你的评论

JSONObject obj = new JSONObject();
obj.put("jsonStringValue","{\"hello\":\"world\"}");
obj.put("naturalStringValue", "\"hello world\"");
System.out.println(obj.toString());
System.out.println(obj.getString("jsonStringValue"));
System.out.println(obj.getString("naturalStringValue"));

印刷

{"jsonStringValue":"{\"hello\":\"world\"}","naturalStringValue":"\"hello world\""}
{"hello":"world"}
"hello world"
于 2015-02-12T16:54:15.473 回答