首页 > 解决方案 > 通过javascript访问json中的元素

问题描述

我正在尝试通过本地网络解析本地 json。但是,如果我尝试解析它并且根据我在 stackoverflow 中的研究它已经是一个对象,它会给我这个错误(位置 241 的 JSON 中的 Unexpected token })。您会看到我试图将其转换为字符串并再次解析它,但这并没有帮助。所以现在我正在尝试访问 JSON 对象,但它要么给我一个错误,要么输出未定义。请记住,当我使用 console.log(body) 时,它实际上向我显示了 JSON 信息。
当我尝试 console.log(body[2]) 时,它会给我一个字母或一个括号,就好像我从一个字符串而不是一个对象的元素返回一样。

我想要的是能够提取一段特定的信息并能够将其存储或发送给客户端。这是我的代码:

var app = express();
app.use(express.static('.'));
app.listen(3000);

var request = require('request');

app.get("/car", function(req, res) {
var url = "http://localhost:3000/car.json";
request.get(url, function(error, response, body) {
    var return_val = [];
    //console.log(test); do not work
    //console.log(body.cars.response[0]); do not work
    var info = JSON.stringify(body); //will turn it to string
    console.log(info);
    var test = JSON.parse(info);
    console.log(test);  //will see the JSON in its original form
    console.log(test[1]); will show me a letter or bracket 
    //console.log(test.cars); //do not work
    res.send();
    res.end();
});
});

here is my JSON, car.json is the file name.
{
  "cars": [
    {
      "car_title": "bmw",
      "rating": 8.6,
      "brand": "bmw",
      "release_date": ["2019/08","2009/10"],
    },
    {
      "car_title": "fiat",
      "rating": 9.2,
      "brand": "fiat",
      "release_date": ["2008/07","2006/12"],
    }
]
}

标签: javascriptjsonapiparsingelement

解决方案


如果您的 JSON 以任何方式与您粘贴到声称是您的 JSON 的问题中的文本相关,那么问题就很清楚了。(该文本实际上不能是 的内容car.json,因为car =它不是任何类型的有效 JSON 文件的开头。

我相信 JSON 解析器试图告诉您的是每个汽车对象末尾的逗号无效。JSON 不允许在对象或数组中使用尾随逗号,也不允许空字段。所以逗号后面不能跟}; 它后面必须跟一个有效的数据。在 JSON 处理器看到逗号后,它不会期望}. 所以它抱怨。

所以删除行尾的逗号:

      "release_date": ["2019/08","2009/10"],

      "release_date": ["2008/07","2006/12"],

推荐阅读