You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JQ根据指定键数组过滤JSON数据?

从JSON中按指定键数组提取键值对的实现方法

给定以下输入:

ARRAY=["keyA", "keyC", "keyE"]
JSON={
  "keyA": "valueA",
  "keyB": "valueB",
  "keyC": "valueC",
  "keyD": "valueD",
  "keyE": "valueE",
  "keyF": "valueF"
}

需要依据ARRAY中的键,从JSON中提取对应键值对,得到目标结果:

TARGET_JSON={
  "keyA": "valueA",
  "keyC": "valueC",
  "keyE": "valueE"
}

JavaScript 实现

通过遍历键数组,筛选原对象中存在的键并构建新对象:

const ARRAY = ["keyA", "keyC", "keyE"];
const JSON_DATA = {
  "keyA": "valueA",
  "keyB": "valueB",
  "keyC": "valueC",
  "keyD": "valueD",
  "keyE": "valueE",
  "keyF": "valueF"
};

const TARGET_JSON = ARRAY.reduce((acc, key) => {
  if (JSON_DATA.hasOwnProperty(key)) {
    acc[key] = JSON_DATA[key];
  }
  return acc;
}, {});

console.log(TARGET_JSON);

Python 实现

利用字典推导式快速生成目标字典:

ARRAY = ["keyA", "keyC", "keyE"]
JSON_DATA = {
  "keyA": "valueA",
  "keyB": "valueB",
  "keyC": "valueC",
  "keyD": "valueD",
  "keyE": "valueE",
  "keyF": "valueF"
}

TARGET_JSON = {key: JSON_DATA[key] for key in ARRAY if key in JSON_DATA}
print(TARGET_JSON)

Java 实现

遍历键数组,逐个从原Map中取出对应值并放入新Map:

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ExtractKeys {
    public static void main(String[] args) {
        List<String> ARRAY = List.of("keyA", "keyC", "keyE");
        Map<String, String> JSON_DATA = new HashMap<>();
        JSON_DATA.put("keyA", "valueA");
        JSON_DATA.put("keyB", "valueB");
        JSON_DATA.put("keyC", "valueC");
        JSON_DATA.put("keyD", "valueD");
        JSON_DATA.put("keyE", "valueE");
        JSON_DATA.put("keyF", "valueF");

        Map<String, String> TARGET_JSON = new HashMap<>();
        for (String key : ARRAY) {
            if (JSON_DATA.containsKey(key)) {
                TARGET_JSON.put(key, JSON_DATA.get(key));
            }
        }

        System.out.println(TARGET_JSON);
    }
}

内容的提问来源于stack exchange,提问作者Murakami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 07:25:00