根据属性的值选择JSON对象

时间:2015-02-07 12:34:15

标签: java jsonobject

我有以下代码:

    try {
            List<Item> object = new ArrayList<Item>();
            for (int i = 0; i < 10; i++) {
                Item item = new Item();
                item.setItemID(i);
                object.add(item);
                item=null;
            }           
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.ALWAYS);
            ObjectWriter ow = objectMapper.writer().withDefaultPrettyPrinter();
            String json = ow.writeValueAsString(object);
            System.out.println(json);
        } catch (Exception e) {
            e.printStackTrace();
        }

by sysout我在控制台中得到了字符串:

[ {
  "dateCreated" : null,
  "createdBy" : null,
  "dateModified" : null,
  "modifiedBy" : null,
  "itemID" : 0
}, {
  "dateCreated" : null,
  "createdBy" : null,
  "dateModified" : null,
  "modifiedBy" : null,
  "itemID" : 1
}, {
  "dateCreated" : null,
  "createdBy" : null,
  "dateModified" : null,
  "modifiedBy" : null,
  "itemID" : 2
}, {
  "dateCreated" : null,
  "createdBy" : null,
  "dateModified" : null,
  "modifiedBy" : null,
  "itemID" : 3
}, {
  "dateCreated" : null,
  "createdBy" : null,
  "dateModified" : null,
  "modifiedBy" : null,
  "itemID" : 4
}, {
  "dateCreated" : null,
  "createdBy" : null,
  "dateModified" : null,
  "modifiedBy" : null,
  "itemID" : 5
}, {
  "dateCreated" : null,
  "createdBy" : null,
  "dateModified" : null,
  "modifiedBy" : null,
  "itemID" : 6
}, {
  "dateCreated" : null,
  "createdBy" : null,
  "dateModified" : null,
  "modifiedBy" : null,
  "itemID" : 7
}, {
  "dateCreated" : null,
  "createdBy" : null,
  "dateModified" : null,
  "modifiedBy" : null,
  "itemID" : 8
}, {
  "dateCreated" : null,
  "createdBy" : null,
  "dateModified" : null,
  "modifiedBy" : null,
  "itemID" : 9
} ]

现在,通过生成的文本,我想搜索每个对象的属性值。

例如: 我想搜索itemID=6,如果找到则需要选择整个对象。所以我的结果文本将是

[ {
  "dateCreated" : null,
  "createdBy" : null,
  "dateModified" : null,
  "modifiedBy" : null,
  "itemID" : 6
} ]

我希望java中的解决方案不在Jquery或任何客户端脚本中。

2 个答案:

答案 0 :(得分:0)

“result”是一个包含你的json的变量。 下面的代码是用java编写的。

JSONObject jObj = new JSONObject(result);
JSONArray jArr = jObj.getJSONArray("array");
jArr.get(6);

jArr.get(6)将返回索引为6的对象。

具体价值如下:

 JSONArray jArr = jObj.getJSONArray("array");
   for (int i = 0; i < jArr.length(); i++) {
     JSONObject jobj1 = jArr.getJSONObject(i); 
       if(jobj1.getInt("itemID")==6){ 
        //Do your work } 
     }

答案 1 :(得分:0)

因此,您有一个Item个对象的列表。此Item具有dateCreated,createdBy,...等属性

假设您拥有这些属性的getter:

如果要搜索属性,请循环遍历List

for (int i = 0; i < list.size(); i++) {
 if (list.get(i).getDateCreated().equals(_Date-you-are-looking-for)) {
  return list.get(i);
 }
}

另一方面,如果你想搜索结果的JSON 字符串,我会使用正则表达式来捕获你想要的整个元素:

/\{.*?itemID=6.*?\}/