它有一种方法来访问对象属性,而对象是Javascript格式的JSON格式?

时间:2014-08-14 08:16:41

标签: javascript json

我是JS的新手,并且一直在努力了解对象是如何工作的。

var string = JSON.stringify({name: "X", born: 1980});
console.log(string);
// → {"name":"X","born":1980}

出于好奇,我尝试了以下方法来尝试访问该属性" born"而对象是JSON格式。

console.log(string["born"]);
// → undefined 

我想这不起作用,因为即使变量字符串是Javascript对象格式{name:" X",born:1980},要求1980年,它也需要相同的表达式console.log(string [" born"])。

console.log(string[""born""]);
// → Uncaught SyntaxError: Unexpected identifier 

console.log(string["\"born\""]);
// → Uncaught SyntaxError: Unexpected identifier 

我有一种感觉,这些只是经验丰富的程序员所说的完全没有意义的代码。但是我想尝试一下去看看自己。

除了在变量字符串上使用JSON.parse之外,有没有办法在对象是JSON格式时访问对象属性?此外,有人可以帮助解释为什么我尝试的不同方式返回未定义或错误?这对我的理解非常有帮助。

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

不要对javascript对象进行字符串化。 如果是字符串化,则将字符串数据类型分配给名为string的变量。有两种方法可以访问JSON对象的属性。

  1. 点符号

    var obj = {name:" X&#34 ;, born:1980}

    的console.log(obj.name);

    的console.log(obj.born);

  2. 括号表示法

    var obj = {name:" X&#34 ;, born:1980}

    的console.log(OBJ ["名称"]);

    的console.log(OBJ ["出生"]);

答案 1 :(得分:0)

无法访问属性,因为您的“对象”未在内部存储或以您期望的方式表示。

JSON.stringify()会返回 String 类型的对象,该对象会为您提供文档中描述的属性和方法。

如果您想“访问”您的媒体资源,您当然可以使用split()indexOf()来修改字符串并获取价值,但这可能是一种棘手而艰难的方式。

我认为没有理由不使用JSON.parse()按照预期的方式访问您的对象。

答案 2 :(得分:0)

因为您的变量字符串没有天生 - 属性。你有一个对象,你将它转换为字符串,如果你想从对象获取属性,你必须使用该对象。 f.e。

var obj = {name: "X", born: 1980};
console.log(obj.born); // also you can write obj["born"] if you want
var string = JSON.stringify(obj); // this string doesn't have property "born" it has the whole JSON of your object

答案 3 :(得分:0)

将json解析回一个对象,或者如果你知道json包含什么,你可以尝试使用RegExp:

var string = JSON.stringify({name: "X", born: 1980});
console.log(string)

//SOLUTION 1
var object = JSON.parse(string);
console.log('from parsed json ', object['born']);

//SOLUTION 2
//warning: this regexp is simple and will not work with any input
var match = string.match(/"born":\s*(true|false|null|\d+|"[^"]*")\s*[,}]/)
console.log('from regexp ', match[1]);

http://jsfiddle.net/qu9gxcyb/