有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java正在尝试获取其集合数组包含“random”的对象的名称

我试图获取其集合数组包含单词“random”的对象的名称。已尝试各种json路径查询,但无法获得正确的查询

{ "elements": [ { "name": "My first element", "language": "French", "tags": ["Paris", "baguette", "Eiffel tower"] }, { "name": "randomOne", "language": "Gibberish", "tags": ["random", "plant, bag"] }, { "name": "bliep", "language": "English", "tags": ["lamp", "table, bed, oven"] } ]}

共 (3) 个答案

  1. # 1 楼答案

    试试这个:

    const jsonObj = {
    	"elements": [{
    			"name": "My first element",
    			"language": "French",
    			"tags": ["Paris", "baguette", "Eiffel  tower"]
    		},
    
    		{
    			"name": "randomOne",
    			"language": "Gibberish",
    			"tags": ["random", "plant, bag"]
    		},
    
    		{
    			"name": "bliep",
    			"language": "English",
    			"tags": ["lamp", "table, bed, oven"]
    		}
    
    	]
    };
    
    let obj = jsonObj.elements.find((obj) => obj.tags.includes('random'));
    
    console.log(obj.name); // randomOne
  2. # 2 楼答案

    你可以简单地:

    1. Array.prototype.forEach()循环通过elements
    2. Array.prototype.includes()查找包含“random”的实例
    3. 使用Array.prototype.push()将找到的名称添加到结果数组中

    见下文:

    const jsondata = {
      elements: [{
          name: "My first element",
          language: "French",
          tags: ["Paris", "baguette", "Eiffel tower"]
        },
        {
          name: "randomOne",
          language: "Gibberish",
          tags: ["random", "plant, bag"]
        },
        {
          name: "bliep",
          language: "English",
          tags: ["lamp", "table, bed, oven"]
        }
      ]
    };
    
    const result = [];
    jsondata.elements.forEach(elem => {
      if (elem.tags.includes("random")) {
        result.push(elem.name);
      }
    });
    
    console.log(result); // [ 'randomOne' ]
  3. # 3 楼答案

    我试过这个问题,并且能够得到在集合数组中具有“random”的名称

    $.elements[?(@.tags.indexOf('random') != -1)].name
    

    如果符合您的目的,请更新