
本文介绍如何使用 Node.js 处理 JSON 数据,查找特定键(例如包含 "RBS" 值的 "Label_Field_ID_" 键),并根据该键的 ID,将对应 "User_Answer_Field_ID_" 键的值替换到新的 "RBS" 键中。通过提供的示例代码,你可以学习如何使用 Object.entries()、字符串处理和对象解构等技术,高效地完成此类数据转换任务。
在处理 JSON 数据时,有时需要根据特定的条件查找键,并将其对应的值移动到新的键中。以下示例展示了如何使用 Node.js 实现这一目标。
示例数据
假设我们有以下 JSON 数据:
[
{
"Author": "rps",
"Label_Field_ID_1117189": "RBS",
"User_Answer_Field_ID_1117189": "4532019166",
"status": "In Bearbeitung"
},
{
"Author": "sps",
"Label_Field_ID_1117230": "RBS",
"User_Answer_Field_ID_1117230": "4232019179"
}
]我们的目标是找到所有以 "Label_Field_ID_" 开头且值为 "RBS" 的键,然后将与该键具有相同数字后缀的 "User_Answer_Field_ID_" 键的值,移动到新的键 "RBS" 中,并删除原 "User_Answer_Field_ID_" 键。
实现步骤
定义一个处理函数: 创建一个名为 updateAnswerFields 的函数,该函数接收一个 JSON 对象作为参数。
查找目标键: 使用 Object.entries() 方法将对象转换为键值对数组,然后使用 find() 方法查找以 "Label_Field_ID_" 开头的键,并提取其对应的值。
构建目标键名: 从找到的 "Label_Field_ID_" 键名中提取数字后缀,并使用该后缀构建对应的 "User_Answer_Field_ID_" 键名。
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
30
提取值并创建新键: 使用对象解构来提取 "User_Answer_Field_ID_*" 键的值,并将其赋给新的 "RBS" 键。
返回修改后的对象: 返回包含新 "RBS" 键的对象,同时删除原 "User_Answer_Field_ID_*" 键。
示例代码
const input = [
{
"Author": "rps",
"Label_Field_ID_1117189": "RBS",
"User_Answer_Field_ID_1117189": "4532019166",
"status": "In Bearbeitung"
},
{
"Author": "sps",
"Label_Field_ID_1117230": "RBS",
"User_Answer_Field_ID_1117230": "4232019179"
}
];
function updateAnswerFields(obj) {
const [label, value] = Object.entries(obj).find(([key, value]) =>
key.startsWith("Label_Field_ID_")
);
const answerKey =
"User_Answer_Field_ID_" + label.split("_").slice(-1)[0];
const { [answerKey]: a, ...rest } = obj;
rest[value] = obj[answerKey];
return rest;
}
console.log(input.map(updateAnswerFields));代码解释
注意事项
总结
通过使用 Object.entries()、字符串处理和对象解构等技术,我们可以高效地处理 JSON 数据,并根据特定的条件查找和替换键值对。这种方法在数据转换和清洗等场景中非常有用。
以上就是使用 Node.js 动态替换 JSON 对象中的键值对的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号