为什么这个JSON值未定义?

时间:2018-04-11 09:23:36

标签: javascript json

我有一个变量json,当我致电console.log(json)时,它会输出{"buildingName":"", "addressLine1":"", "postcode":""}

为什么,当我致电console.log(json.postcode)时,我会得到undefined

修改

console.log(typeof json)确实会输出' string'。感谢大家的帮助!

5 个答案:

答案 0 :(得分:5)

json仍然是一个字符串,您需要JSON.parse将其转换为对象。您现在正在尝试访问postcode的未定义属性String

答案 1 :(得分:2)

如果它是 JSON ,则它是一个字符串,因此它没有该属性。您正尝试将其用作对象( JSON 中的 O )。

您可以通过

将其变为对象
let object = JSON.parse(json)

答案 2 :(得分:1)

您的变量json必须是一个字符串,这就是您在访问媒体资源undefined

时获得postcode的原因

错误代码



var json = '{"buildingName":"", "addressLine1":"", "postcode":""}';
console.log(json.postcode);




因此,您需要做的是解析json变量以获取已解析的json,然后访问postcode。由于postcode为空,因此您不会在控制台中为此属性打印任何内容:

工作代码



var json = '{"buildingName":"", "addressLine1":"", "postcode":""}';
var json = JSON.parse(json);
console.log(json.postcode);




答案 3 :(得分:0)

您必须将JSON字符串解析为对象。为此,请尝试$.parseJSON(json)

一个工作示例:



$(document).ready(function(){
  var json = '{"buildingName":"", "addressLine1":"", "postcode":"xyz"}';
  var parsedStr = $.parseJSON(json);
  console.log(parsedStr.postcode);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 4 :(得分:0)

我假设你的真实语法是:

json = '{"buildingName":"", "addressLine1":"", "postcode":""}';

这是一个字符串。为了将其更改为对象,您需要将其解析为如下对象:

data = JSON.parse(json);

现在您可以记录对象及其内容。而不仅仅是字符串:

console.log(data);
console.log(data.postcode);