NodeJS 使用字符串中的键和值集将分隔字符串转换为JSON对象

sr4lhrrt  于 2023-06-05  发布在  Node.js
关注(0)|答案(3)|浏览(443)

我有一根这样的弦

var string = "1234|Tom|NYC|Student|Active"

我想在typescript中Map到NodeJS API

{  
  "Id": 1234,
  "Name": "Tom",
  "City": "NYC",
  "Title": "Student",
  "Status": "Active",
}

这里的密钥来自一组可以存储在任何地方的静态密钥。
我尝试将字符串转换为数组并尝试.reduce,但最终无法获得所需的结果...
你能帮帮忙吗?

5w9g7ksd

5w9g7ksd1#

你可以有一个像下面这样的键数组:

let keys = ["Id", "Name", "City", "Title", "Status"];

然后按如下方式在分隔符上拆分字符串:

let string = "1234|Tom|NYC|Student|Active";
let splitValues = string.split("|");

然后循环遍历键数组,并根据值数组的索引创建一个具有键值的对象:

let returnObject = {};

for (let i = 0; i < keys.length; i++) {
    const key = keys[i];
    
    const value = splitValues[i];

    returnObject[key] = value;

};

或者,您可以创建一个函数,该函数接受键数组、字符串值和分隔符并返回对象:

function convertDelimitedStringToObject(keys, string, delimiter) {

    let splitValues = string.split(delimiter);

    let returnObject = {};

    for (let i = 0; i < keys.length; i++) {
        const key = keys[i];

        const value = splitValues[i];

        returnObject[key] = value;

    };

    return returnObject;
};

但是,只有当键和值始终以相同的顺序出现时,此解决方案才有效。
如果希望它是一个JSON字符串,则可以对返回的对象调用JSON.stringify()

z9smfwbn

z9smfwbn2#

你可以这样使用.split()

let string = "1234|Tom|NYC|Student|Active"
const id = string.split("|")[0]
const name = string.split("|")[1]

然后你创建一个对象:

const finalObj = {id,name}
0s7z1bwu

0s7z1bwu3#

将任意字符串Map到一组已定义的将需要强制执行字符串值的固定格式。
否则,将不会有任何优化的方法将Map到一组,除非手动迭代通过分隔符(|)拆分字符串(var string = "1234|Tom|NYC|Student|Active")形成的“字符串值数组”,然后手动将Map到定义的的集合...
let keys = ["Id", "Name", "City", "Title", "Status"];

相关问题