我有一个带有密钥的json文件,该值是一个带有密钥值对的json。我想过滤并提取基于内部键值对的密钥。任何帮助都是非常感谢的。
示例json数据:
{
    "key1": {
      "filterkey": "filtervalue",
      "key1": "value1"
    },
    "key2": {
      "key1": "value1",
      "key2": "value2"
    }
}发布于 2018-08-15 05:59:42
如果输入json是稳定的,并且不需要控制任何边缘情况(任意深度,顶级类型不匹配,例如"key1": "not a dict"),那么这就解决了您的问题:
ret = []
for k, v in js.items():
    if v.get("filterkey") == "filtervalue":
        ret.append(k)发布于 2018-08-15 05:59:57
运行代码段查看输出:
    var jsonObject = {
                        "key1": {
                            "filterkey": "filtervalue",
                            "key1": "value1"
                        },
                        "key2": {
                            "key1": "value1",
                            "key2": "value2"
                        }
                    };
    function filterKey(jsonObject, keySearch, valueSearch) {
        var result = null;
        for (const key in jsonObject) {
            if (jsonObject.hasOwnProperty(key) && 
                jsonObject[key][keySearch] !== undefined && 
                jsonObject[key][keySearch] === valueSearch) {
                result = key;
                break;
            }
        }
        return result;
    }
    alert(filterKey(jsonObject, 'filterkey', 'filtervalue'));
发布于 2018-08-15 06:08:49
jq '.[] | select( .filterkey == "filtervalue") | to_entries[1]| .key'   sample.json按filterkey选择,将对象转换为键值实体,然后接受第二个条目的键。产出如下:
"key1"https://stackoverflow.com/questions/51853545
复制相似问题