即使是json也是正确的,json解析没有在java脚本中工作?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (56)
var data={
  "apple_scab": {
    "sym": "Dark velvet covering on leaves, Velvety olive-green to black spots on leaves",
    "cause": "Venturia inaequalis",
    "nc_c": "Use resistant varieties: Prima, Priscilla, Sir Prize, Jonafree, Red free, Dayton, Pristine, Goldrush, Enterprise or Liberty.",
    "c_c": "Use fungicide such as Captan."
  }}

大多数在线解析器成功解析了上述JSON

另外,我可以直接将它放在浏览器的js控制台中,我可以从控制台读取。

如果我在使用带有变量的json.parse()时给一个变量赋值:

var obj = JSON.parse(data);

*VM568:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
    at JSON.parse (<anonymous>)
    at <anonymous>:1:6*
提问于
用户回答回答于

JSON.parse接受一个字符串,该字符串被解析,然后返回一个充满解析数据的对象。但是你传递的是一个对象。data已经解析了,所以你根本就不需要JSON.parse

Unexpected token o in JSON at position 1由于一些奇怪的javascript怪癖,你得到这个错误。基本上,它试图将对象强制转换为字符串,以便可以对其进行解析。并且对象被简单地强制转换为字符串[object Object]。所以你实际上在跑步

JSON.parse('[object Object]')

这是无效的json,错误告诉您字符串的第一个字符无效。

但在您的情况下,您可以简单地使用data而无需解析。

var data={
  "apple_scab": {
    "sym": "Dark velvet covering on leaves, Velvety olive-green to black spots on leaves",
    "cause": "Venturia inaequalis",
    "nc_c": "Use resistant varieties: Prima, Priscilla, Sir Prize, Jonafree, Red free, Dayton, Pristine, Goldrush, Enterprise or Liberty.",
    "c_c": "Use fungicide such as Captan."
  }
}
用户回答回答于

因此,从我收集的内容来看,您正在尝试解析已经是对象的对象。

let someObject = { hello: "world" };
JSON.parse(someObject);

这将失败,因为JSON.parse()无法解析对象。

为了使它成功,它必须是一个字符串。

let someJsonString = '{ "hello": "world" }';
let myObject = JSON.parse(someJsonString);
console.log(myObject);

这将成功并解析对象。

扫码关注云+社区

领取腾讯云代金券