当前位置: 首页 > 知识库问答 >
问题:

如何转换数组js[重复]中的对象

寿丰
2023-03-14

我对编程很陌生,我找不到我的问题的解决方案,你能给我解决方案吗?

我有这个JSON文件:

{
  "groups": "[{ id: 1, title: 'group 1' }, { id: 2, title: 'group 2' }]"
}

在我的js中需要类似这样的东西(但我想导入我的JSON以获得像这样的数组):

const groups = [{ id: 1, title: 'group 1' }, { id: 2, title: 'group 2' }]

我不知道不使用jQuery该怎么做。

我已经试过了:

const json = require('./test.json');

这几乎是我想要的,但当我在代码中使用它时,它不起作用,因为我不想要对象,而是像上面所说的和数组。

共有1个答案

彭高畅
2023-03-14

groups的值不是有效的JSON:字符串值应该用双引号包围,键也应该用双引号包围。该字符串中包含有效JSON的文件如下所示:

{
  "groups": "[{ \"id\": 1, \"title\": \"group 1\" }, { \"id\": 2, \"title\": \"group 2\" }]"
}

当然,如果您控制了这个文件的创建,那么最好将这个值作为本机JSON内容的一部分,而不是json-in-a-string-inside-json。如果不可能,您需要自己更正字符串中的引号,这可以通过几个正则表达式替换来完成。

/* obj is the object in the JSON file */
var json_str = obj.groups.replace(/'/g,"\"").replace(/([a-z]+)\:/g,"\"$1\":");
var groups = JSON.parse(json_str);

或者,尽管字符串不是有效的JSON,但它是有效的Javascript表达式,因此如果文件的内容是可信的,您也可以使用eval:来完成

var groups = eval(obj.groups);
 类似资料: