JSONをJavaに解析しようとしています。
jsonlint.com によると、有効な json である次の文字列があります。
private final static String LOC_JSON =
"["
+"{"
+" \"lat1\": 39.737567,"
+" \"lat2\": 32.7801399,"
+" \"long1\": -104.98471790000002,"
+" \"long2\": -96.80045109999998"
+"},"
+" ["
+" {"
+" \"lat\": {"
+" \"b\": 38.88368709500021,"
+" \"d\": 40.620468491667026"
+" },"
+" \"long\": {"
+" \"b\": -105.75306170749764,"
+" \"d\": -104.675854661387"
+" }"
+" }"
+" ]"
+"]";
オブジェクトに解析しようとすると、次のエラーが発生します。「BEGIN_OBJECT が必要でしたが、1 行目と 2 列目が BEGIN_ARRAY でした」
Gson gson = new Gson();
BoxSearch b = gson.fromJson( LOC_JSON, BoxSearch.class );
BoxSearchはこれで構成されています。
private Number lat1;
private Number lat2;
private Number long1;
private Number long2;
private Boxes[] boxes;
Boxes は緯度オブジェクトと経度オブジェクトであり、どちらも同一に定義されています。
private String b;
private String d;
上位レベルの属性 (lat1、lat2、long1、および long2) を解析して、これら 4 つの属性のみを持つより単純な BoxSearch オブジェクトにすることができます。問題は、json とオブジェクトがより複雑な場合に発生します。私がしようとしていることをすることさえ可能ですか?
助けを得るのに十分な情報を提供できたことを願っています。必要に応じて、より多くの情報やテスト プロジェクトを提供できれば幸いです。これをjunitテストとして実行しています。
ありがとう。