如何将带有数组的字符串转换为数组

时间:2018-07-18 08:27:22

标签: javascript json

如何将这部分响应转换为有效的数组?
我要对数据执行 Object.map

var user_roles = "['store_owner', 'super_admin']";

这不是有效的JSON,所以我不能使用JSON.parse

3 个答案:

答案 0 :(得分:6)

是的,这里发布的大多数答案都建议使用JSON.parse,然后在被删除之前先降低投票3次。人们在这里忽略的是缺少符合JSON的报价。字符串IS是有效的JavaScript。您可以执行以下操作:

const obj = {
  thing: "['store_owner', 'super_admin']",
  otherThing: "['apple', 'cookies']"
}

for (const key in obj) {
  const value = obj[key];
  obj[key] = eval(value);
}

console.log(obj);

输出将是有效的javascript对象:

{"thing":["store_owner","super_admin"],"otherThing":["apple","cookies"]} 

不过,请注意eval()javascript eval() and security

您可以在这里尝试:https://es6console.com/jjqvrnhg/

答案 1 :(得分:3)

我为string kipindoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); if (Directory.Exists(@kipindoc + @"\kipin")) { //code } else { loading.IsActive = false; MessageDialog messageDialog = new MessageDialog("Buku Pengetahuan Umum tidak tersedia"); messageDialog.Commands.Add(new UICommand("Kembali", (command) => { this.Frame.Navigate(typeof(MainPage)); })); await messageDialog.ShowAsync(); } 找到了here

将字符串的含义替换为由JSON.parse 单引号表示的字符串:

''

答案 2 :(得分:-1)

使其符合JSON

JSON.parse(user_roles.replace(/(?<!\\)'/g,'"')

这通过修复无法用JSON解析代码的原因而起作用。原因是JSON不允许您使用单引号('),因此我们将其更改为双引号(“)

编辑:

我这样做的目的是,当'之前是\时,它不会被"取代。