我正在尝试创建一个看起来像这样的JSON对象:
{
"values": {
"barcode": "{"title":"611269991000grant"}"
}
}
请注意,条形码的值只是一个字符串。这是我写的:
// title = 611269991000grant
params = new JSONObject("{\"values\": {\"barcode\":" + "\"{\"title\":\"" + title + "\"}\" } }");
但问题是,这会引发一个例外
Unterminated object at character 26 of {"values": {"barcode":"{"title":"611269991000grant"}" } }
任何人都知道我做错了什么?
答案 0 :(得分:0)
这是无效的 JSON 。变化
params = new JSONObject("{\"values\": {\"barcode\":" + "\"{\"title\":\"" + title + "\"}\" } }");
到
params = new JSONObject("{\"values\": {\"barcode\":" + "{\"title\":\"" + title + "\"} } }");
这样你的 JSON 最终会成为:
{
"values": {
"barcode": {"title":"611269991000grant"}
}
}
答案 1 :(得分:0)
如果您的意图是barcode
的值是文档的字符串表示形式而不是文档,那么
"{"title":"611269991000grant"}"
无效,您可以使用"
替换内部双引号\
,或者使用单引号"
替换内部双引号'
{
"values": {
"barcode": "{'title':'611269991000grant'}"
}
}
或
{
"values": {
"barcode": "{\"title\":\"611269991000grant\"}"
}
}
答案 2 :(得分:0)
找到解决我问题的方法:
String jsonobj = "{\\\"title\\\":\\\"" + title + "\\\"}";
params = new JSONObject("{\"values\": {\"barcode\":\"" + jsonobj + "\"} }");
我需要加倍转义,因为条形码的值是通过流发送的,我仍然需要它是JSON格式。所以我的程序现在将JSON对象读作
{"values":{"barcode":"{\"title\":\"611269991000,grant\"}"}}
并将条形码值发送到流并由webapp读取为
{"title":"611269991000,grant"}
伪JSON!我忘了提到条形码值只能包含一个字符串,这就是我试图做魔术的原因。