Java 根据属性的值选择JSON对象
我有以下代码:Java 根据属性的值选择JSON对象,java,jsonobject,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);
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();
}
现在,通过生成的文本,我想搜索每个对象的属性值
例如:
我想搜索itemID=6
,如果找到,则需要选择整个对象。所以我的结果文本将是
[ {
"dateCreated" : null,
"createdBy" : null,
"dateModified" : null,
"modifiedBy" : null,
"itemID" : 6
} ]
我想要java解决方案,而不是Jquery或任何客户端脚本。“result”是一个包含json的变量。
下面的代码是用java编写的
JSONObject jObj = new JSONObject(result);
JSONArray jArr = jObj.getJSONArray("array");
jArr.get(6);
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 }
}
JSONArray jArr=jObj.getJSONArray(“数组”);
for(int i=0;i
因此,您有一个项
对象的列表。此项
具有dateCreated、createdBy等属性
假设您拥有这些属性的getter:
如果要搜索属性,请在列表上循环:
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getDateCreated().equals(_Date-you-are-looking-for)) {
return list.get(i);
}
}
for(int i=0;i
另一方面,如果您想搜索得到的JSON字符串,我将使用正则表达式捕获您想要的整个元素:
/\{.*?itemID=6.*?\}/
OP说我想搜索每个对象的属性值。
如果他想通过createdBy
进行搜索怎么办。按索引搜索不是一个解决方案,除非他只想按id搜索——他不想这样做。@gudthing说的没错。按itemid搜索只是一个例子。我可以按任何属性进行搜索。您可以运行一个for循环,使其达到json的大小,并在每个索引处将项ID与键匹配。像这样的JSONArray jArr=jObj.getJSONArray(“数组”);对于(int i=0;ifor (int i = 0; i < list.size(); i++) {
if (list.get(i).getDateCreated().equals(_Date-you-are-looking-for)) {
return list.get(i);
}
}