我在Android项目中的JSON对象中使用逗号读取字符串时遇到问题。下面是一个有效的JSON字符串:
{"success": "[TG2301_Stoke Holy Cross, TF7439_Thornham Corner, TL8583_Thetford]"}
但有时地名有逗号,并且我用JSON和StringTokenizer方法摇摆不定,我用它来将JSON解析为键:值对,如下面的最后一项所示:
{"success": "[TG2301_Stoke Holy Cross, TF7439_Thornham Corner, TL8583_Thetford, North]"}
在我发现此错误之前,我使用以下内容来解析JSON:
StringTokenizer str1 = new StringTokenizer(str,"[,]");
while (str1.hasMoreTokens()) {
String val = str1.nextToken().trim();
// Split the string at the underscore and do some stuff
}
有人可以建议如何正确地转义地名字符串中的逗号,无论是在创建JSON时的Java中,还是在StringTokenizer中?感谢。
答案 0 :(得分:4)
有人可以建议如何在创建JSON [...] 时在Java中正确地转义地名字符串中的逗号吗?
你的问题是你将许多值作为单个字符串返回 - 你在括号内有在之外,而不是在里面(包含各个值)。你可能想要一个JSON的字符串列表,而不是自己砍掉东西:
{"success": ["TG2301_Stoke Holy Cross",
"TF7439_Thornham Corner",
"TL8583_Thetford, North"]}
这样,引号中的逗号在任何方面都不是神奇的,你可以将你的地名作为好的字符串。
话虽如此,你实际想要做的是返回一个JSON对象(它的工作方式很像Java字典)而不是字符串列表,这样你甚至可以得到你的键/值对分裂很好:
{"success": {"TG2301": "Stoke Holy Cross",
"TF7439": "Thornham Corner",
"TL8583": "Thetford, North"}}