web-dev-qa-db-ja.com

文字列をJsonArrayに変換できません

この文字列をどのようにgson.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に変換する方法ですか?

19
Nava

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」を付けることを忘れないでください。

import com.google.gson.*;
41
AaronYC

私は問題を見ません。このコードは私にとってうまくいきます:

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 );
    }
}

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

7
Mike Kwan

上記の回答は非推奨です。これが実際のコードです。

  val outputJsonArray = JsonParser.parseString(pasteYourStringHere).asJsonArray

これは非推奨のメッセージです。代わりに静的メソッドを呼び出す必要があります。

enter image description here

0