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で、地名文字列内のコンマを適切にエスケープする方法を誰かが提案できますか?

問題は、多くの値を1つの文字列として返すことです。つまり、(個々の値を囲む)内側ではなく、角かっこの外側に二重引用符があります。自分で切り刻むのではなく、文字列の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 に答える