
本文介绍如何使用 Node.js 处理 JSON 数据,查找特定键(例如包含 “RBS” 值的 “Label_Field_ID_” 键),并根据该键的 ID,将对应 “User_Answer_Field_ID_” 键的值替换到新的 “RBS” 键中。通过提供的示例代码,你可以学习如何使用 Object.entries()、字符串处理和对象解构等技术,高效地完成此类数据转换任务。
查找并替换 JSON 对象中的键值
在处理 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_” 键名。
Find JSON Path Online
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(obj): 将对象 obj 转换为键值对数组。find(([key, value]) => key.startsWith(“Label_Field_ID_”)): 查找以 “Label_Field_ID_” 开头的键值对。label.split(“_”).slice(-1)[0]: 从键名中提取数字后缀。const { [answerKey]: a, …rest } = obj;: 使用对象解构提取 answerKey 对应的值,并将剩余的键值对放入 rest 对象中。rest[value] = obj[answerKey];: 将 answerKey 对应的值赋给 value 键(即 “RBS” 键)。input.map(updateAnswerFields): 对 input 数组中的每个对象应用 updateAnswerFields 函数。
注意事项
确保 JSON 数据的结构符合预期,即 “Label_Field_ID_” 和 “User_Answer_Field_ID_” 键存在且具有正确的格式。如果 “Label_Field_ID_*” 键的值不是 “RBS”,则代码仍然会执行,但可能不会产生预期的结果。 可以添加条件判断语句来处理这种情况。
总结
通过使用 Object.entries()、字符串处理和对象解构等技术,我们可以高效地处理 JSON 数据,并根据特定的条件查找和替换键值对。这种方法在数据转换和清洗等场景中非常有用。
以上就是使用 Node.js 动态替换 JSON 对象中的键值对的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/230814.html
微信扫一扫
支付宝扫一扫