これが私のjson文字列で、Javaでアクセスしています。
json =
[
{"id":"123456","Data":"skill2","dmlcrud":false},
{"id":"123456","Data":"skill3","dmlcrud":true},
{"id":"123456","Data":"skill14","dmlcrud":true},
{"id":"123321","Data":"skill1","dmlcrud":false},
{"id":"123321","Data":"skill14","dmlcrud":false}
]
私は今それをコレクションに入れたいので、理想的/理論的には次のことをしたいと思います。
List<Person> personList = new Gson().fromJson(json, Person.class);
そして、personList.size()は= 5になります。次に、personListをループして、関連するアクションを実行します。
ただし、私の理解では、個人リストを含むコンテナクラスを作成する必要がありますか?したがって、代わりに(簡潔にするためにパブリックゲッター/セッターを削除しました。おそらく構文エラーもあります)。
Class Person {
private integer id;
private String Data;
private Boolean dmlCrud ;
}
私は実際に次のようなものが必要になりますか?
Class container{
List<Person> personList;
static class Person {
private integer id;
private String Data;
private Boolean dmlCrud ;
}
}
ただし、javascript jsonを変更して、まったく異なるものにする必要がありますか?JSON.stringifierを使用してjavascript配列からjson文字列を作成しているので、これはかなり問題があるようです。
ありがたいことにどんな助けも受けました。
編集
私が使用した解決策は、追加することでした
public List<Person> personList;
人物クラスに変更し、jsonオブジェクトを変更して
{ "personList" :
[
{"id":"123456","Data":"skill2","dmlcrud":false},
{"id":"123456","Data":"skill3","dmlcrud":true},
{"id":"123456","Data":"skill14","dmlcrud":true},
{"id":"123321","Data":"skill1","dmlcrud":false},
{"id":"123321","Data":"skill14","dmlcrud":false}
]
}
gson呼び出しは次のようになります
Person person = new Gson().fromJson(json, Person.class);
そして、そのようなリストでアクセスされるデータ
List<Person> personList = person.getPersonList();
編集2
2番目の、より良い解決策は、このjson配列を使用することです
[
{"id":"123456","Data":"skill2","dmlcrud":false},
{"id":"123456","Data":"skill3","dmlcrud":true},
{"id":"123456","Data":"skill14","dmlcrud":true},
{"id":"123321","Data":"skill1","dmlcrud":false},
{"id":"123321","Data":"skill14","dmlcrud":false}
]
その後、
Type listType = new TypeToken<List<SkillsGsonTO>>() {}.getType();
List<Person> personList = new Gson().fromJson(json,listType);
Person person1 = personList.get(0);
元のクラスが使用される場所
Class Person {
private integer id;
private String Data;
private Boolean dmlCrud ;
}