无法访问JSON值

时间:2014-05-12 15:56:24

标签: javascript json

我有这样的json:

"{'total': 1, 'product_name': 'Cup'}"

JSON.parse()之后我的结果如下:

a = {'total': 1, 'product_name': 'Cup'}

如果我访问a.total我得到了未定义。如果我在浏览器控制台中复制这一切,它可以正常工作,但不能在我的应用上工作。怎么了?

代码:

data = "{'total': '1', 'product_name': 'Cup'}"; 
parsedData = JSON.parse(data);
prod_name = parsedData.product_name;

2 个答案:

答案 0 :(得分:1)

"{'total': 1, 'product_name': 'Cup'}"是有效的JSON - 它是一个值为{'total': 1, 'product_name': 'Cup'}的单个字符串(即它看起来像一个对象,但不是一个!)。

相反,您需要将值{"total": 1, "product_name": "Cup"}的字符串传递给JSON.parse(即大括号外没有引号,字符串没有双引号)。

如果你在JavaScript中这样做,它会是这样的:

data = "{\"total\": 1, \"product_name\": \"Cup\"}";
parsed = JSON.parse(data);

如您所见,您需要转义引号: - )

答案 1 :(得分:0)

您的JSON无效。必须使用"而非'引用JSON字符串。

  • 执行test您的JSON
  • 避免手写JSON
  • 在使用JavaScript时避免使用JSON

这样:

parsedData = {'total': 1, 'product_name': 'Cup'}

console.log(parsedData)
{'total': 1, 'product_name': 'Cup'}
console.log(typeof(parsedData))
string

如果是这种情况,那么您的JSON是有效的,但它只是一个包含单个字符串的JSON文本。

摆脱JSON周围的",并将其中的'更改为"