我有以下代码:
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或任何客户端脚本中。
答案 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.*?\}/