我需要接受来自用户的字符串并将其按原样放入 JSONObject 中。文档说可以引用字符串,但'
很明显我误解了。
这足够还是我错过了什么?
jsonObject.put("name", "'" + userInput + "'");
我逐步完成了该put
功能,但它似乎根本不关心字符串!有一个quote
函数,但它在字符串周围添加了另一组双引号,这似乎不正确。
您似乎在引用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"