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

如何合并WordPress导出的关联JSON文件(适配Gatsby JS)?

嘿,这个需求我太熟了!之前帮朋友迁移WordPress到Gatsby的时候,刚好处理过一模一样的场景。给你分几个部分说清楚:

最优合并方案思路

核心原则是减少查找时间,因为两个文件是post_id和ID一一对应的关系,最好先把postsMeta.json转成以post_id为键的映射表(比如JavaScript的Map或者普通对象),这样遍历posts.json的时候,能瞬间找到对应的元数据,比嵌套循环效率高太多,数据量大的时候差异特别明显。

用JavaScript实现的具体步骤

用Node.js写个小脚本是最灵活的,步骤很简单,不需要复杂的依赖:

  1. 先把两个JSON文件放在同一个文件夹里,然后新建一个merge.js文件
  2. 把下面的代码粘进去:
const fs = require('fs').promises;
const path = require('path');

async function mergePostsAndMeta() {
  // 读取两个JSON文件
  const postsData = await fs.readFile(path.join(__dirname, 'posts.json'), 'utf8');
  const metaData = await fs.readFile(path.join(__dirname, 'postsMeta.json'), 'utf8');

  // 解析成JS对象
  const posts = JSON.parse(postsData);
  const postMetas = JSON.parse(metaData);

  // 把元数据转成Map,key是post_id,value是元数据对象
  const metaMap = new Map(postMetas.map(meta => [meta.post_id, meta]));

  // 遍历posts,合并对应的元数据
  const mergedPosts = posts.map(post => {
    const matchedMeta = metaMap.get(post.ID);
    // 如果找到对应元数据就合并,找不到就保留原post(避免报错)
    return matchedMeta ? {...post, meta: matchedMeta} : post;
  });

  // 写入新的JSON文件
  await fs.writeFile(path.join(__dirname, 'mergedPosts.json'), JSON.stringify(mergedPosts, null, 2), 'utf8');
  console.log('合并完成!已生成mergedPosts.json');
}

mergePostsAndMeta().catch(err => console.error('合并出错:', err));
  1. 打开命令行(CMD或者PowerShell),进入这个文件夹,运行node merge.js就行

如果你的postsMeta.json里的元数据结构是每个post对应多条(比如一个post有多个meta键值对),可以稍微改一下代码,把同一个post_id的元数据合并成一个对象,比如:

// 处理多条目元数据的情况
const metaMap = new Map();
postMetas.forEach(meta => {
  if (!metaMap.has(meta.post_id)) {
    metaMap.set(meta.post_id, {});
  }
  // 假设meta里有key和value字段,比如{post_id:1, key:'author', value:'xxx'}
  metaMap.get(meta.post_id)[meta.key] = meta.value;
});

这样合并后的post里的meta就是一个键值对对象,更方便Gatsby使用。

Windows下的JSON辅助工具

如果你不想写代码,这些工具也能搞定:

  • JSONBuddy:可视化的JSON编辑器,有专门的合并功能,可以选择按指定字段匹配合并,操作很直观,适合非技术人员
  • jq(Windows版):命令行工具,功能超强,一行命令就能完成合并,适合批量处理
  • VS Code + JSON Tools插件:安装JSON Tools插件后,右键就能找到合并JSON的选项,还能自定义匹配字段,开发人员用起来很顺手
  • Notepad++ + JSON Viewer插件:虽然不如前几个强大,但如果只是偶尔处理,安装插件后也能完成基本的合并操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:26:46