JSON解析到多个POJO集合

时间:2011-10-24 15:02:11

标签: java json gson pojo

我需要以某种方式使用GSON将单个json字符串转换为特定类型的多个对象。

我有一个json字符串的格式(下面包含2但可能有100个)

{domain : name1, geo: us} {domain : name2, country : uk}

现在我想将上面的内容转换为映射到字符串每个部分的pojo实例。假设POJO被称为网站。然后我需要将json字符串拆分为2个Website对象。

我正在考虑使用某种类型的标记生成器拆分json字符串,然后在每个部分上应用一些json逻辑。我假设在将任何json应用到pojo转换之前我必须这样做吗?

我似乎找不到办法做到这一点。请指教。

非常感谢

2 个答案:

答案 0 :(得分:2)

要将json反序列化为java pojo,请尝试json-lib,http://json-lib.sourceforge.net/。这是一个很好的解决方案。虽然我会使用flexjson进行序列化。

String json = "{bool:true,integer:1,string:\"json\"}";  
JSONObject jsonObject = JSONObject.fromObject( json );  
BeanA bean = (BeanA) JSONObject.toBean( jsonObject, BeanA.class );  

BeanA是您的POJO。

如果您有多个对象,就像您在示例中所示,请执行以下操作

String json = "{'data':[{'name':'Wallace'},{'name':'Grommit'}]}";
JSONArray jsonArray = (JSONArray) net.sf.json.JSONSerializer.toJSON(json);
for (int i = 0; i < jsonArray.size(); i++) {
   JSONObject jsonObject = (JSONObject) jsonArray.get(i);
   BeanA bean = (BeanA) JSONObject.toBean( jsonObject, BeanA.class );
   //do whatever you want with each object
}

答案 1 :(得分:2)

假设你有这样一个类网站:

class Website {
    String domain;
    String geo;
}

首先将您的字符串修复为有效的json:

String input = "{\"domain\" : \"name1\", \"geo\": \"us\"} {\"domain\" : \"name2\", \"country\" : \"uk\"}";

String json = "[" + input + "]";

然后使用标准gson技术转换为网站列表:

java.lang.reflect.Type t = new TypeToken<List<Website>>(){}.getType();
List<Website> websites = new Gson().fromJson(json, t);