Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据属性的值选择JSON对象_Java_Jsonobject - Fatal编程技术网

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); } }