用jacksonjava解析JSON
我在使用Jackson解析JSON时遇到问题。我有一个物体,被另一个包裹着 这是我的密码:用jacksonjava解析JSON,java,json,string,parsing,jackson,Java,Json,String,Parsing,Jackson,我在使用Jackson解析JSON时遇到问题。我有一个物体,被另一个包裹着 这是我的密码: in main: ObjectMapper mapper = new ObjectMapper(); List<ItemBean> mpl2 = mapper.readValue(col.toString(),new TypeReference<List<ItemBean>>() {}); my POJO class: public class ItemBean i
in main:
ObjectMapper mapper = new ObjectMapper();
List<ItemBean> mpl2 = mapper.readValue(col.toString(),new TypeReference<List<ItemBean>>() {});
my POJO class:
public class ItemBean implements Serializable {
private List<Item> items;
@JsonProperty("Item")
public List<Item> getItems() {
return items;
}
public void setItems(List<Item> items) {
this.items = items;
}
}
public class Item implements Serializable{
public String field1;
public Integer field2;
public static final class Field3 extends GenericJson {
private String subfield1;
private String subfield2;
}
}
JSON的外观如下:
["{\n
\"items\":
[
\n {
\n \"item\": {
\n \"field1\": \"val1\",
\n \"field2\": \"val2\",
\n \"field3\": [
\n {
\n \"subfield1\": subval
\n \"subfield2\": subval
\n }
\n ]
\n }
\n },
\n \"item\": {
\n \"field1\": \"val1\",
\n \"field2\": \"val2\",
\n \"field3\": [
\n {
\n \"subfield1\": subval
\n \"subfield2\": subval
\n }
\n ]
\n }
\n },
\n \"item\": {
\n \"field1\": \"val1\",
\n \"field2\": \"val2\",
\n \"field3\": [
\n {
\n \"subfield1\": subval
\n \"subfield2\": subval
\n }
\n ]
\n }
\n },
etc...... may I haven't closed brackets correctly, but they are correct :)
}
]
"]
POJO完全重复JSON对象的字段。我编写了自己的方法,解析这种结构的JSON 代码如下:
public static List parseList(String jsonInput, Class clazz) {
List result = new LinkedList();
JSONArray json = (JSONArray) JSONSerializer.toJSON(jsonInput);
JSONObject items = (JSONObject)json.getJSONObject(0);
JSONArray dataArrayJSON = (JSONArray)items.getJSONArray("items");
for (int i = 0; i < dataArrayJSON.size(); i++) {
result.add(JSONObject.toBean(dataArrayJSON.getJSONObject(i).getJSONObject("item"), clazz));
}
return result;
}
公共静态列表parseList(字符串jsonInput,类clazz){
列表结果=新建LinkedList();
JSONArray json=(JSONArray)JSONSerializer.toJSON(jsonInput);
JSONObject项=(JSONObject)json.getJSONObject(0);
JSONArray dataArrayJSON=(JSONArray)items.getJSONArray(“items”);
for(int i=0;i
问题是,项在数组中,而项是唯一的元素。反过来,items也是一个数组,因此我使用了
dataArrayJSON.getJSONObject(I).getJSONObject(“item”)
构造。JSON看起来像什么?这没有任何意义:您的JSON是一个(奇怪的)字符串数组-这既不会用问题中的代码进行解析,也不会用您自己的答案进行解析。
public static List parseList(String jsonInput, Class clazz) {
List result = new LinkedList();
JSONArray json = (JSONArray) JSONSerializer.toJSON(jsonInput);
JSONObject items = (JSONObject)json.getJSONObject(0);
JSONArray dataArrayJSON = (JSONArray)items.getJSONArray("items");
for (int i = 0; i < dataArrayJSON.size(); i++) {
result.add(JSONObject.toBean(dataArrayJSON.getJSONObject(i).getJSONObject("item"), clazz));
}
return result;
}