如何在数组js中转换对象

时间:2019-01-09 14:48:04

标签: javascript json

我对编程很陌生,找不到解决方案,请给我解决方案吗?

我有这个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');

此代码返回一个对象:screen of what is returned

这几乎是我想要的,但是当我在代码中使用它时却无法正常工作,因为我不想要对象,而是像上面所说的那样放置数组。

如何实现?

6 个答案:

答案 0 :(得分:3)

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);

答案 1 :(得分:0)

我只需要像这样填充数组“组”:

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

带有json文件但没有jquery

答案 2 :(得分:0)

由于我没有在原始问题中注意到“没有jQuery”,所以这里有一个新答案:

var request = new XMLHttpRequest();
request.open('GET', './test.json', true);

request.onload = function() {
  if (request.status >= 200 && request.status < 400) {
    // Success!
    var data = JSON.parse(request.responseText);
  } else {
    // We reached our target server, but it returned an error

  }
};

它有两件事:  1.加载json文件  2.将加载的字符串解析为javascript对象。

答案 3 :(得分:-1)

如果您无法编辑原始文本,则需要将'替换为',然后进行JSON.parse(json.groups);

否则,您可以像这样更改您的json:

JSON.parse('[{ "id": 1, "title": "group 1" }, { "id": 2, "title": "group 2" }]')

请谨慎使用“和”括号

{
  "key":"string"
}

用'括号定义的字符串无效

JSON键中的

必须位于“”括号中

答案 4 :(得分:-1)

在使用JSON文件执行任何操作之前,您需要加载它。 jQuery有一个快捷方式,甚至可以自动为您将JSON字符串解析为本地JS对象:

$.getJSON('./test.json', function(data) {
  console.dir(data);
});

https://api.jquery.com/jquery.getjson/

答案 5 :(得分:-2)

您可以通过以下方式将对象解析为数组:

Object.values(YOUR_OBJECT)

docs:https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/values