使用Jackson解析没有标识符的JSON对象

时间:2015-02-19 11:40:18

标签: java json parsing jackson

我从网络服务获取JSON,我得到的JSON响应是:

{  
   "response":"itemList",
   "items":[  
      "0300300000",
      "0522400317",
      "1224200035",
      "1224200037",
      "1547409999"
   ]
}

我希望在items数组中获取每个id。问题是我不确定如何在items数组中没有id的标识符时用Jackson解析它。我的理解是我可以有一个带有变量id的项目类和@JsonProperty(" id"),但我不知道如何继续。我需要在列表中显示这些ID(一旦我有数据,我就没有问题。

有人可以指出我正确的方向。

谢谢。

4 个答案:

答案 0 :(得分:1)

您可以反序列化为类似

的内容
public class MyData {
  public String response;
  public List<String> items;
}

(如果您使用公共set方法的私有字段,这也会有效)。或者,如果您不介意在数据类中使用特定于jackson的注释,则可以将它们保留为非公共注释并注释它们:

public class MyData {
  @JsonProperty
  String response;

  @JsonProperty
  List<String> items;
}

无论如何,使用它来解析:

import com.fasterxml.jackson.databind.ObjectMapper;
//...

MyData data=new ObjectMapper().readValue(jsonStringFromWebService, MyData.class);

答案 1 :(得分:0)

我想是的,你想要这个:

    ArrayList<String> notifArray=new ArrayList<String>();
    JSONObject jsonObj= new JSONObject (resultLine);
    JSONArray jArray = jsonObj.getJSONArray("items");
    for (int i = 0; i < jArray.length(); i++) {                     
        String str = jArray.getString(i);
        notifArray.add(str);
    }

答案 2 :(得分:0)

您可以将JSON字符串转换为JSON对象,并识别数组并获取ID ..

String josn = "{\"response\":\"itemList\", \"items\":[\"0300300000\",\"0522400317\",\"1224200035\",\"1224200037\",\"1547409999\"]}";
JSONObject jsonObject =  new org.json.JSONObject(josn);
JSONArray itemsArray = jsonObject.getJSONArray("items");
System.out.println("Item - 1 =" + itemsArray.getString(0));

答案 3 :(得分:0)

class Something {
    public String response;

    @JsonCreator
    public Something(@JsonProperty("response") String response) {
        this.response=response;
    }

    public List<String> items= new ArrayList<String>();

    public List<String> addItem(String item) {
        items.add(item);
        return items;
    }
}

然后:

public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
    String json = "{\"response\":\"itemList\",\"items\":[\"0300300000\",\"0522400317\"]}";
    ObjectMapper mapper = new ObjectMapper();
    mapper.readValue(json, Something.class);
}