1

私はこのJavaクラスを持っています:

class A {
    private B b;

    class B {
        private String a;
        //getter + setter
    }    
}

これは JSON ファイルの内容です。

[{"b" : {"a": "Hello!"}},
 {"b" : {"a": "Hi!"}},
 {"b" : {"a": "Hello2!"}}]

ArrayList<A>JSON ファイルを、ネストされたクラスを内部に持つにデシリアライズしたいと考えています。これどうやってするの?

4

3 に答える 3

1

これは Gson で簡単に実現できます。

package stackoverflow.questions.q18932252;

import java.lang.reflect.Type;
import java.util.*;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class Q18932252 {

    public static void main(String[] args){
        String json = "[{\"b\" : {\"a\": \"Hello!\"}}, {\"b\" : {\"a\": \"Hi!\"}}, {\"b\" : {\"a\": \"Hello2!\"}}]";
        Type listOfA = new TypeToken<List<A>>() {}.getType();
        Gson g = new Gson();
        ArrayList<A> result = g.fromJson(json, listOfA);
        System.out.println(result);


    }

}

この結果(標準toStringメソッドを追加しました):

[A [b=B [a=Hello!]], A [b=B [a=Hi!]], A [b=B [a=Hello2!]]]

JSON ファイル、つまり JSON 文字列を含むテキスト ファイルについて質問しているため、ファイルを文字列にロードする方法については、ファイルの内容から Java 文字列を作成する方法の質問を参照してください。

于 2013-09-21T19:45:31.093 に答える
0

質問で提供された情報に従って、この投稿を参照してください。これにより、データと配列を使用した Gson による Json の解析の問題が解決されます。

于 2013-09-21T12:04:51.463 に答える
0

gson の使用:

Gson gson = new Gson();
String json = "[{\"b\" : {\"a\": \"Hello!\"}}, {\"b\" : {\"a\": \"Hi!\"}}, {\"b\" : {\"a\": \"Hello2!\"}}]";
A[] arrA = new A[0];
System.out.println(Arrays.toString(gson.fromJson(json, arrA.getClass())));
于 2013-09-21T12:29:29.250 に答える