如何使用JavaScript将JSON中的列名替换为数组值

gywdnpxw  于 2023-05-30  发布在  Java
关注(0)|答案(2)|浏览(208)

假设我想用JavaScript分别用我的数组替换冒号之前的所有Json项,我该怎么做呢?正如您在下面看到的,是一个Json对象,表示列名和第一行。我想用下面显示的数组中的值替换列名的位置。

// Json object
const Json = "{id: '1', name: 'Abednego Nasila', Reg: '123'}"

下面是我的数组

//array variable
const arr = ['myId', 'Student_name', 'Adm.no']

我想要的输出应该如下所示:

"{myId: '1', Student_name: 'Abednego Nasila', Adm.no = '123'}"

谢谢
任何帮助将不胜感激。

pw136qt2

pw136qt21#

问题是源JSON实际上不是有效的JSON字符串。因此,为了将其转换为对象,我使用了一个有点黑客的解决方案。我不建议在真实的的生产环境中使用这种方法。您可能希望首先将源字符串转换为有效的JSON。
无论如何,这是如何实现的:

// Json object
const Json = "{id: '1', name: 'Abednego Nasila', Reg: '123'}"

//array variable
const arr = ['myId', 'Student_name', 'Adm.no']

let source = {};
eval('source = ' + Json);

const result = {};
arr.forEach((field, index) => result[field] = Object.values(source)[index]);

console.log(result);
ukdjmx9f

ukdjmx9f2#

下面是一个函数,它将给定JSON String 中的键替换为给定Array中的键。
现在去学习:

// create a real json string from an object
let REALJSON = JSON.stringify( {id: 1, name: 'Abednego Nasila', Reg: 123} );

console.log(`the JSON: ${REALJSON}`);

//array variable
const JSONReplaceKeys = (JSONStr, nwKeys) => {
  // parse the JSON
  const obj = JSON.parse(JSONStr);
  // create an Array with keys/values from obj
  const nwObj = Object.entries(obj)
  // use a reducer to create a new Object with the new keys
  .reduce( (acc, [key, value], i) => 
    ({...acc, [nwKeys[i]]: value }), {});
  // stringify the new Object
  return JSON.stringify(nwObj);
}

// let's try it
REALJSON = JSONReplaceKeys(REALJSON, ['myId', 'Student_name', 'Adm_no']);

console.log(`the new JSON ${REALJSON}`);

相关问题