97

JSONArray を解析する方法を見つけるのに苦労しています。次のようになります。

[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"},...]

JSON が別の方法で記述されている場合 (つまり、オブジェクトの配列ではなく json オブジェクトが返された場合)、それを解析する方法を知っています。しかし、それは私が持っているすべてであり、それと一緒に行かなければなりません。

*編集:有効なjsonです。このjsonを使用してiPhoneアプリを作成しましたが、Android用に実行する必要があり、理解できません。そこにはたくさんの例がありますが、それらはすべて JSONObject 関連です。JSONArray 用の何かが必要です。

誰かがヒント、チュートリアル、または例を教えてください。

とても有難い !

4

11 に答える 11

27

ジャクソンの例を少しだけ挙げます。

まず、JSON 文字列のフィールドを持つデータ ホルダーを作成します。

// imports
// ...
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyDataHolder {
    @JsonProperty("name")
    public String mName;

    @JsonProperty("url")
    public String mUrl;
}

MyDataHolders のリストをパースする

String jsonString = // your json
ObjectMapper mapper = new ObjectMapper();
List<MyDataHolder> list = mapper.readValue(jsonString, 
    new TypeReference<ArrayList<MyDataHolder>>() {});

リスト項目の使用

String firstName = list.get(0).mName;
String secondName = list.get(1).mName;
于 2013-09-24T10:01:49.320 に答える
12

オブジェクトを保持するクラスを作成します。

public class Person{
   private String name;
   private String url;
   //Get & Set methods for each field
}

次に、次のようにデシリアライズします。

Gson gson = new Gson();
Person[] person = gson.fromJson(input, Person[].class); //input is your String

参考記事: http: //blog.patrickbaumann.com/2011/11/gson-array-deserialization/

于 2013-09-24T09:08:01.363 に答える
6

この例では、1 つの json 配列内に複数のオブジェクトがあります。あれは、

これは json 配列です: [{"name":"name1","url":"url1"},{"name":"name2","url":"url2"},...]

これは 1 つのオブジェクトです: {"name":"name1","url":"url1"}

jSonResultString と呼ばれる String 変数に結果を取得したと仮定します。

JSONArray arr = new JSONArray(jSonResultString);

  //loop through each object
  for (int i=0; i<arr.length(); i++){

  JSONObject jsonProductObject = arr.getJSONObject(i);
  String name = jsonProductObject.getString("name");
  String url = jsonProductObject.getString("url");


}
于 2013-09-24T09:09:56.413 に答える
2

私の場合 サーバーからのロードの例..

int jsonLength = Integer.parseInt(jsonObject.getString("number_of_messages"));
            if (jsonLength != 1) {
                for (int i = 0; i < jsonLength; i++) {
                    JSONArray jsonArray = new JSONArray(jsonObject.getString("messages"));
                    JSONObject resJson = (JSONObject) jsonArray.get(i);
                    //addItem(resJson.getString("message"), resJson.getString("name"), resJson.getString("created_at"));
                }
于 2015-11-04T07:56:44.247 に答える
-3

私が知っている古い投稿ですが、質問を誤解していない限り、これでうまくいくはずです:

s = '[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"}]';
eval("array=" + s);
for (var i = 0; i < array.length; i++) {
for (var index in array[i]) {
    alert(array[i][index]);
}

}

于 2015-11-09T10:34:28.613 に答える
-3
            URL url = new URL("your URL");
            connection = (HttpURLConnection) url.openConnection();
            connection.connect();
            InputStream stream = connection.getInputStream();
            BufferedReader reader;
            reader = new BufferedReader(new InputStreamReader(stream));
            StringBuffer buffer = new StringBuffer();
            String line = "";
            while ((line = reader.readLine()) != null) {
                buffer.append(line);
            }

            //setting the json string
            String finalJson = buffer.toString();

            //this is your string get the pattern from buffer.
            JSONArray jsonarray = new JSONArray(finalJson);
于 2016-01-30T14:31:41.760 に答える