2011-06-23 19 views
15

どのようにこの文字列をgson.JsonArrayに変換しますか?文字列をJsonArrayに変換できません

String s= "[["110917 ", 3.0099999999999998, -0.72999999999999998, 2.8500000000000001, 2.96, 685.0, 38603.0], ["110917 ", 2.71, 0.20999999999999999, 2.8199999999999998, 2.8999999999999999, 2987.0, 33762.0]]"; 

これは私のコードです:

com.google.gson.*; 
public static void main(String[] args) 
    { 
     //Declared S here 
     System.out.println("String to Json Array Stmt"); 
     JsonParser parser = new JsonParser(); 
     JsonElement tradeElement = parser.parse(s.toString()); 
     JsonArray trade = tradeElement.getAsJsonArray(); 
     System.out.println(trade); 
    } 

これはJSonArrayに、このコレクションの文字列を変換する方法ですか?

+0

どのライブラリを使用していますか? –

+0

com.google.gson.JsonArray; Libraryこれを使用しています(gson) – Nava

答えて

31

JSON配列内に文字列値を入れるには、Javaプログラムで二重引用符をバックスラッシュでエスケープする必要があります。以下のsの宣言を参照してください。

String s = "[[\"110917  \", 3.0099999999999998, -0.72999999999999998, 2.8500000000000001, 2.96, 685.0, 38603.0], [\"110917 \", 2.71, 0.20999999999999999, 2.8199999999999998, 2.8999999999999999, 2987.0, 33762.0]]"; 

main()メソッドのコードが正常に動作します。以下は、main()メソッドのコードを少し変更したものです。

System.out.println("String to Json Array Stmt"); 
JsonParser parser = new JsonParser(); 
JsonElement tradeElement = parser.parse(s); 
JsonArray trade = tradeElement.getAsJsonArray(); 
System.out.println(trade); 

最後に、あなたの文の前に付けることを忘れないでください「com.google.gsonを。*」キーワード「輸入」して、以下に示すように。

import com.google.gson.*; 
+0

ここで、誤ってインポートで間違っています。実際にはソースで追加されました.thanks – Nava

+0

JsonArrayを分割することは可能ですか? – Nava

+0

JsonArray "trade"の最初の要素([\ "110917 \"、3.0099999999999998、-0.72999999999999998、2.8500000000000001,2.96、685.0、38603.0])を取得することを意味しますか? "trade.get(0)"を試してください。 – AaronYC

6

問題は表示されません。このコードは私のために正常に動作:

import com.google.gson.JsonArray; 
import com.google.gson.JsonElement; 
import com.google.gson.JsonParser; 


public class GsonExample { 
    public static void main(String[] args) { 
     String s= "[[\"110917\", 3.0099999999999998, -0.72999999999999998," + 
       "2.8500000000000001, 2.96, 685.0, 38603.0], [\"110917\", 2.71," + 
       "0.20999999999999999, 2.8199999999999998, 2.8999999999999999," + 
       "2987.0, 33762.0]]"; 


     JsonParser parser = new JsonParser(); 
     JsonElement elem = parser.parse(s); 

     JsonArray elemArr = elem.getAsJsonArray(); 
     System.out.println(elemArr); 
    } 
} 

唯一の問題は多分あなたが適切リテラルあなたの文字列に二重引用符をエスケープすることができなかったということです。

+0

なぜ文字列の前に/(バックスラッシュ)を追加する必要があるのか​​分かりますか? – Nava

+0

ちょうど最初のリストはjson配列としてのみ必要ですか?合格することは可能ですか? – Nava

+0

スラッシュは "文字をエスケープすることです。もしあなたがそれをしなければ、コンパイラは文字列を例えば閉じることを意図していないことを知ることができません"。参照:http://en.wikipedia.org/wiki/Escape_character –

関連する問題