typescript 如何将包含等号的字符串解析为object

mu0hgdu0  于 2022-12-24  发布在  TypeScript
关注(0)|答案(1)|浏览(214)

我有一个字符串变量

let stringValue = "{DATA={VERSION=1.1, STATE=true, STATUS=ONLINE}}"

我想将其解析为对象result,其中result为:

let result = {"DATA":{"VERSION":1.1, "STATE": true, "STATUS": "ONLINE"}}

如何将stringValue转换为result对象,以便可以访问嵌套的键?

console.log(result.DATA.STATUS)
nhaq1z21

nhaq1z211#

假设键和字符串值全部大写:

  • 我使用正则表达式/[A-Z]+/g.match(regex)来获取字符串中所有大写单词的数组。
  • 从数组中创建一个Set,以删除重复项并避免对同一字符串多次重复执行下一步。
  • 然后迭代每个单词,并将主字符串中的单词替换为引号中的单词。DATA =〉"DATA"
  • 然后将=替换为:
  • 最后是JSON.parse(),我们得到了这个对象。
let stringValue = "{DATA={VERSION=1.1, STATE=true, STATUS=ONLINE}}";

let regex = /[A-Z]+/g
let objectStrings = stringValue.match(regex)
let uniqueStrings = [... new Set(objectStrings)]

uniqueStrings.forEach((string) => stringValue = stringValue.replaceAll(string, '"'+string+'"'));
stringValue  = stringValue.replaceAll('=', ':');

console.log(JSON.parse(stringValue))

Here在JSBin中显示键已正确分配,没有引号。

相关问题