2012-11-14 14 views
7

以前は正規表現を使用したことがなく、1つ以上のJSONオブジェクトを含むファイルを分割することを検討しています。JSONオブジェクトはコンマで区切られません。だから私はそれらを "} {"と中かっこの両方に分ける必要があります。これは、文字列は次のようになります。正規表現を使用してシンプルなJSON構造を分割する

{id:"123",name:"myName"}{id:"456",name:"anotherName"} 

あなたのオブジェクトは、あなたが表示さ何よりも複雑でない場合、私はstring.split()

["{id:"123",name:"myName"}", "{"id:"456",name:"anotherName"}"] 
+0

可能な複製http://stackoverflow.com/questions/2773710/php-as3-regex-to-split-multiple-json-in-one –

+0

私はそれについて知りません。その質問にはJSONオブジェクトがオブジェクトの中にあります私はもっ​​と簡単なことをしようとしていますが、どのようにしているのか分かりません。今私はString [] temp = json.split( "\\} \\ {");を使用しています。それは最初の1つの罰金を取得しますが、私はそれが2番目のオブジェクトが正しくないように中括弧のいくつかを削除すると思います。 – Rebeka

+0

JSONのいくつかの文字列値に '} {'が含まれている可能性がある場合は、実際にその文字列を解析するしかありません。実際のJSONとして解析するか、文字列の内容を分離するのに十分な構文解析を行い、おそらく二重引用符も含めて残りの部分を解析する必要があります。 – hyde

答えて

11

を使用してのような文字列配列をしたいと思い、あなたがこのようなlookaroundsを使用することができます:

String[] strs = str.split("(?<=\\})(?=\\{)"); 

Exemple:

String str = "{id:\"123\",name:\"myName\"}{id:\"456\",name:\"yetanotherName\"}{id:\"456\",name:\"anotherName\"}"; 
String[] strs = str.split("(?<=\\})(?=\\{)"); 
for (String s : strs) { 
    System.out.println(s);   
} 
枚の

プリント

{id:"123",name:"myName"} 
{id:"456",name:"anotherName"} 
{id:"456",name:"yetanotherName"} 

あなたのオブジェクトが複雑であれば、正規表現はおそらく動作しないでしょうし、あなたの文字列を解析する必要があります。

+1

素晴らしい!ありがとうございました!完璧なソリューション。 =) – Rebeka

+0

同じ問題が発生しました。これは魅力的に機能しました。ありがとう@ディストロイ:) –

関連する問題