【问题标题】:Converting a nested array stored as a string back into a nested array using JavaScript [duplicate]使用JavaScript将存储为字符串的嵌套数组转换回嵌套数组[重复]
【发布时间】:2021-04-07 14:03:03
【问题描述】:

我有一个嵌套数组作为字符串存储在我的数据库中。获取后,它以字符串的形式返回。我需要将它转换回嵌套数组。 JSON.parse 不适用于此,不幸的是,我收到此错误:

VM5481:1 Uncaught SyntaxError: Unexpected token ' in JSON at position 2

基本上,我需要转换这个:

"[['E4', '4n.'], ['D4', '8n'], ['C4', '4n'], ['D4', '4n']]"

到这里:

[['E4', '4n.'], ['D4', '8n'], ['C4', '4n'], ['D4', '4n']]

使用 JavaScript。

【问题讨论】:

  • 谢谢!这次我很难找到类似的问题,但我以后一定会遵循这些准则。

标签: javascript


【解决方案1】:

使用 JSON 时,字符串文字应使用双引号 " 而不是单引号。您可以更改任何给您的字符串以使用双引号(即:有效的 JSON 字符串)或使用 .replace() 方法更改现有字符串:

const str = "[['E4', '4n.'], ['D4', '8n'], ['C4', '4n'], ['D4', '4n']]";
const res = JSON.parse(str.replace(/'/g, '"'));
console.log(res);

如果您可以控制它,我建议您更改通过 replace 方法返回字符串的任何内容。

【讨论】:

  • 到目前为止,这就是数据的存储方式。如果我有机会将它存储为嵌套数组,我会开始,但我被要求暂时将嵌套数组存储为字符串。但这是一个非常有用的解决方案 - 我的 RegEx 需要重新整理!
  • @mlgvla 不用担心。我的最后一条评论主要是指您如何创建字符串。例如,如果您有一个嵌套数组,您可以使用JSON.stringify(yourNestedArray) 将您的嵌套数组转换为字符串并存储它。这样,当您需要将其转换回数组时,您可以在其上使用JSON.parse() 而不会出现任何问题,因为 JSON.stringify 会将您的嵌套数组转换为有效的 JSON 字符串,这是 JSON.parse() 所期望的(所以在我们尝试解析它之前不需要操作字符串)
  • 很高兴知道这一点。数据库中的原始数据来自数据库种子文件,其中数组被手动转换为字符串 - 因此需要在嵌套数组元素中转换为单引号。在程序使用中,嵌套数组将由用户创建,并在 POST 到数据库之前与其他相关数据一起经过 JSON.stringify。这可能会在它到达数据库之前立即处理。如果我必须重置数据库,我可能仍然需要考虑我必须处理的任何种子数据或找到预处理种子数据的方法。
  • 我可能会尝试将种子文件中的双引号更改为转义双引号。这可能会让 JSON.parse 更快乐。
  • 仅供参考 - 有效!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-16
  • 1970-01-01
  • 2020-02-16
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多