2016-12-15 18 views
0

私はURLからJSONをロードするJava機能を持っているし、私が使用している機能は、JSONObjectのJava:JSONオブジェクト含む配列

として返します: json = new JSONObject(jsonString); 問題がある

org.json.JSONObjectからオブジェクトに含まれる配列は、配列ではなく文字列として返されるだけです。

JSONの形式もわからないので、解析するオブジェクトのプロパティを特に呼び出すことはできません。それは、存在する可能性のある配列を処理するだけで済みます。

どうすればこの問題を解決できますか?

+3

いくつかのコード例がありますか?入出力? – cralfaro

+1

GoogleのGsonライブラリを使用して、JSONファイルを逆シリアル化する必要があります。 –

答えて

0

Gsonをjson文字列の解析に使用できます。そのクリーンで簡単です。

Gsonを使用するには、最初にこのような単一の応答オブジェクトを記述するクラスを作成する必要があります。

public class ResponseObject { 
    public String id; 
    public String name; 
} 

オブジェクトの配列を含むjson文字列がすでにあるので、次のようにjson文字列を解析します。

Gson gson = new Gson(); 
ResponseObject[] objectArray = gson.fromJson(jsonString, ResponseObject[].class); 

シンプル!それでもJSONObject、あなたは配列が実際に取得方法たい場合

+0

Jan Kaufmannの答えと同じですが、これはJavaがJSONの形式を知っていなければならないということですが、問題はありません。 JavaはJSONObjectをVelocityテンプレートに返します。そのため、Javaはフォーマットを知らなくてもオブジェクト内の配列を処理できる必要があります。 – marcusds

0

..

JSONObject jsonObject = new JSONObject(jsonString); 
JSONArray hobbies = jsonObject.getJSONArray("hobbies"); 

ので

hobbies.getString(0) 
hobbies.getString(1) 
etc.. 

JSONArray自体がに.getを持っていることを()getDouble(),getInt()など

+0

これは、JavaがJSONの形式を知っていなければならないという意味ですが、そうではありません。 JavaはJSONObjectをVelocityテンプレートに返します。そのため、Javaはフォーマットを知らなくてもオブジェクト内の配列を処理できる必要があります。 – marcusds

+0

そうすることはあなた自身の責任ではありませんか?まだあなたはフォーマットの繰り返しやjsonの構造について質問していませんでした。それは、それが同じであるかどうかをチェックするために*私のために/私の仕事*と同じですが、このようなことが何度も議論されている配列かどうかをチェックします(http://stackoverflow.com/questions/9988287/test)。 -if-it-is-jsonobject-or-jsonarray) –

関連する問題