StringTokenizer,JSON和逗号

时间:2011-12-28 14:45:46

标签: java android json stringtokenizer

我在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中?感谢。

1 个答案:

答案 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"}}