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

如何将含德语键的JSON转换为MongoDB Mongoose英文Schema格式?

解决德语键名JSON转Mongoose英文Schema格式的方案

针对结构一致但键名语言不同的转换需求,这里提供两种高效的批量转换方案,无需手动逐字段赋值:

方法1:键名映射+递归转换(纯JS实现)

通过定义键名映射表,配合递归函数处理嵌套结构,适合需要在Mongoose之外也使用转换后数据的场景。

步骤1:定义键名映射表

将需要转换的德语键与对应的英文键一一对应:

const keyMapping = {
  'Benutzer': 'User',
  'Vorname': 'Firstname',
  'Nachname': 'Lastname'
  // 后续新增转换键直接添加即可
};

步骤2:编写递归转换函数

遍历对象/数组的所有层级,自动替换键名:

function convertKeyNames(obj, mapping) {
  // 处理数组:遍历每个元素递归转换
  if (Array.isArray(obj)) {
    return obj.map(item => convertKeyNames(item, mapping));
  }
  // 处理对象:遍历每个键替换并递归处理值
  if (obj && typeof obj === 'object') {
    return Object.keys(obj).reduce((result, key) => {
      // 优先用映射后的键,无映射则保留原键
      const targetKey = mapping[key] || key;
      // 递归处理嵌套的子对象/数组
      result[targetKey] = convertKeyNames(obj[key], mapping);
      return result;
    }, {});
  }
  // 非对象/数组类型直接返回原值
  return obj;
}

步骤3:使用转换后的对象操作Mongoose

const rawObject = JSON.parse(file_as_string);
const formattedObject = convertKeyNames(rawObject, keyMapping);

MyObject.findOneAndUpdate(
  { Uid: formattedObject.Uid },
  formattedObject,
  { upsert: true, new: true } // upsert可选,根据需求决定是否新增文档
);

方法2:利用Mongoose字段别名/虚拟字段(ORM原生支持)

直接在Mongoose Schema中配置键名映射,让框架自动处理转换,更贴合Mongoose的使用习惯。

步骤1:修改Schema配置

为嵌套字段添加alias,顶层字段通过虚拟字段映射:

const UserSubSchema = new mongoose.Schema({
  Firstname: { type: String, alias: 'Vorname' },
  Lastname: { type: String, alias: 'Nachname' }
});

const MainSchema = new mongoose.Schema({
  Uid: Number,
  User: UserSubSchema
}, {
  toJSON: { virtuals: true },
  toObject: { virtuals: true } // 可选,序列化时保留别名字段
});

// 为顶层的Benutzer字段设置虚拟字段,映射到User
MainSchema.virtual('Benutzer')
  .get(function() { return this.User; })
  .set(function(value) { this.User = value; });

const MyObject = mongoose.model('MyObject', MainSchema);

步骤2:直接使用原始德语键对象操作Mongoose

此时Mongoose会自动识别德语别名,映射到对应的英文Schema字段:

const rawObject = JSON.parse(file_as_string);

MyObject.findOneAndUpdate(
  { Uid: rawObject.Uid },
  rawObject,
  { upsert: true, new: true }
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:30:57