1

我在我的 Android 项目的 JSON 对象中读取带逗号的字符串时遇到问题。一个有效的 JSON 字符串如下:

{"success": "[TG2301_Stoke Holy Cross, TF7439_Thornham Corner, TL8583_Thetford]"}

但有时地名有逗号,这与我用来将 JSON 解析为 key:values 对的 JSON 和 StringTokenizer 方法不一致,如下面的最后一个条目所示:

{"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 中正确地转义地名字符串中的逗号?谢谢。

4

1 回答 1

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"}}
于 2011-12-28T15:02:24.783 回答