首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于键值筛选的jq查询json密钥

基于键值筛选的jq查询json密钥
EN

Stack Overflow用户
提问于 2018-08-15 05:47:25
回答 4查看 1K关注 0票数 0

我有一个带有密钥的json文件,该值是一个带有密钥值对的json。我想过滤并提取基于内部键值对的密钥。任何帮助都是非常感谢的。

示例json数据:

代码语言:javascript
运行
复制
{
    "key1": {
      "filterkey": "filtervalue",
      "key1": "value1"
    },
    "key2": {
      "key1": "value1",
      "key2": "value2"
    }
}
  • 过滤器:“筛选键”:“筛选值”
  • 预期产出:"key1“
EN

回答 4

Stack Overflow用户

发布于 2018-08-15 05:59:42

如果输入json是稳定的,并且不需要控制任何边缘情况(任意深度,顶级类型不匹配,例如"key1": "not a dict"),那么这就解决了您的问题:

代码语言:javascript
运行
复制
ret = []
for k, v in js.items():
    if v.get("filterkey") == "filtervalue":
        ret.append(k)
票数 0
EN

Stack Overflow用户

发布于 2018-08-15 05:59:57

运行代码段查看输出:

代码语言:javascript
运行
复制
    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'));

票数 0
EN

Stack Overflow用户

发布于 2018-08-15 06:08:49

代码语言:javascript
运行
复制
jq '.[] | select( .filterkey == "filtervalue") | to_entries[1]| .key'   sample.json

按filterkey选择,将对象转换为键值实体,然后接受第二个条目的键。产出如下:

代码语言:javascript
运行
复制
"key1"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51853545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档