2011-12-28 3 views
1

Androidプロジェクト内のJSONオブジェクト内にカンマを含む文字列の読み込みに問題があります。StringTokenizer、JSON、カンマの

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

しかし、時には地名は、コンマのを持っている、そしてそれは私がキーにJSONをパースするために使用するJSONとStringTokenizerはメソッドでグラグラをスロー:作業JSON文字列は以下の通りです以下に示すように、値のペア最後のエントリ:

StringTokenizer str1 = new StringTokenizer(str,"[,]"); 
while (str1.hasMoreTokens()) { 
String val = str1.nextToken().trim(); 
// Split the string at the underscore and do some stuff 
} 

誰が正しくPL内カンマをエスケープする方法を提案することができます:

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

私はJSONを解析するために、次を使用していた、このバグを発見する前にJSONを作成するときにJavaの中か、StringTokenizerのどちらかにあるacename文字列?ありがとう。

+1

これは有効なJSONではありません。 'success'は文字列の配列のように見えますが、文字列は引用符で囲まれているはずです。 –

+0

私の「良い」JSON文字列をhttp://jsonlint.com/に入れると、有効なものとして戻ってきます。 – iaindownie

+0

構文的に有効であるという理由だけで、あなたが望むことを意味するわけではありません。ああ、どれほど簡単な人生であろうが(あるいはそうでないかもしれない)。 – gustafc

答えて

4

JSON を作成するときに誰もが [...]のいずれかのJavaで、適切地名文字列内にカンマをエスケープする方法を提案することができますか?

あなたの問題は、あなたが1つの文字列として多くの値を返しているということです - あなたは内部の二重引用符外括弧ではなく、(個々の値を囲む)を持っています。

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

この方法では、引用符内のカンマがどのような方法で魔法のようなものではなく、あなたが素敵な文字列としてあなたの地名を取得する:あなたは、おそらく米国に代わり、自分次第ものをチョッピングの文字列のJSONリストが欲しいです。

実際にがしたいことは、文字列のリストの代わりにJSONオブジェクト(Java辞書とよく似ています)を返すことで、キー/値のペアがうまく分割されるようになります:

{"success": {"TG2301": "Stoke Holy Cross", 
      "TF7439": "Thornham Corner", 
      "TL8583": "Thetford, North"}} 
+0

OK、私はこれを作成できると確信していますが、これを解析するためにStringTokenizerの 'トークン'を使用しますか?コンマは確かに同じ問題を抱えていますか? – iaindownie

+0

最後のコメントを忘れる - 私はあなたが単一の文字列の代わりにJSONオブジェクトを提案しているのを見ることができます。ありがとう。 – iaindownie

+0

大括弧の中に二重引用符を入れる方法について - 文字列の一部に二重引用符が含まれているとどうなりますか? – BornToCode

関連する問題