javascript - 通过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"],
}
]
}
解决方案
如果您的 JSON 以任何方式与您粘贴到声称是您的 JSON 的问题中的文本相关,那么问题就很清楚了。(该文本实际上不能是 的内容car.json
,因为car =
它不是任何类型的有效 JSON 文件的开头。
我相信 JSON 解析器试图告诉您的是每个汽车对象末尾的逗号无效。JSON 不允许在对象或数组中使用尾随逗号,也不允许空字段。所以逗号后面不能跟}
; 它后面必须跟一个有效的数据。在 JSON 处理器看到逗号后,它不会期望}
. 所以它抱怨。
所以删除行尾的逗号:
"release_date": ["2019/08","2009/10"],
"release_date": ["2008/07","2006/12"],
推荐阅读
- json - 如何从 JSON 中读取嵌套数组元素?
- html - 如何将索引标记和值添加到输入类型范围
- .net - EF Core 5:模型之间的依赖关系
- openssl - OpenSSL:如何验证不嵌入签名证书的时间戳令牌?
- android - 在 Fragment Android Sudio Kotlin 中从 Camera/Gallery 添加 ImageView
- javascript - 悬停html元素时更改css类
- excel - 单元格上的日期并将其与当前日期进行比较
- python - 从 Qlikview 应用程序中提取表格的正确 API/scrape 方法
- 2d - Godot2D我怎样才能让敌人的攻击碰撞工作
- android - AppAuth Android 在第二次尝试时未关闭浏览器重定向响应(为什么它不是幂等操作)