我是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格式时访问对象属性?此外,有人可以帮助解释为什么我尝试的不同方式返回未定义或错误?这对我的理解非常有帮助。
感谢您的帮助!
答案 0 :(得分:2)
不要对javascript对象进行字符串化。 如果是字符串化,则将字符串数据类型分配给名为string的变量。有两种方法可以访问JSON对象的属性。
点符号
var obj = {name:" X&#34 ;, born:1980}
的console.log(obj.name);
的console.log(obj.born);
括号表示法
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]);