我正在尝试使用基于JSON的服务,该服务在其响应中使用包装器。包装器看起来像这样:
{
"errors": [
{
"message": "some message",
"code": "possibly some error code"
}
],
"result": [],
"metadata": {
"limit": 100,
"offset": 0,
"total": 5
}
}
“结果”可能包含一个对象或一个对象数组。例如,如果我正在调用“apple”服务,我会在结果中获得一个苹果对象或一组苹果对象。同样,如果我正在调用“橙色”服务,我会在结果中获得橙色对象或橙色对象数组。
问题是,如何使用杰克逊对其进行反序列化?
谢谢,
乔
答案 0 :(得分:0)
也许这会对你有所帮助:
List<artikli> lista = new ArrayList<artikli> (Testni_podaci ());
Gson gson = new Gson();
//list to JSON
String JsonString = gson.toJson(lista);
System.out.println( JsonString +"\n");
JsonParser parser = new JsonParser ();
JsonElement element = parser.parse( JsonString);
JsonArray arrays = element.getAsJsonArray();
//JSON to list
List<artikli> JsonToList = new ArrayList<artikli> ();
for(int i=0;i<arrays.size();i++){
JsonElement e =arrays.get(i);
artikli k = new artikli();
k=gson.fromJson(e,artikli.class);
JsonToList.add(k);
}
测试数据:
public static List<artikli> Testni_podaci (){
List<artikli> lista = new ArrayList<artikli> ();
kategorijaartikla kateg = new kategorijaartikla();
kateg.setId(5);
kateg.setKategorija("kategorijaa");
artikli temp = new artikli();
temp.setId(1);
temp.setNaziv("artikl 1");
temp.setKategorijaartikla(kateg);
lista.add(temp);
temp = new artikli();
temp.setId(2);
temp.setNaziv("artikl 2");
temp.setKategorijaartikla(kateg);
lista.add(temp);
return lista;
}