如果有一种方法可以在Javascript中以JSON格式访问对象属性

It there a way to access an object property while the object is in JSON format in Javascript?

本文关键字:中以 Javascript JSON 格式 属性 对象 访问 方法 一种 如果      更新时间:2023-09-26

我是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之外,还有什么方法可以访问JSON格式的对象属性吗?解析变量字符串?此外,有人可以帮助解释为什么不同的方式,我已经尝试返回未定义或错误?这对我的理解很有帮助。

谢谢你的帮助!

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

  1. 点符号

    var obj = {name:"X",出生日期:1980}

    console.log (obj.name);

    console.log (obj.born);

  2. 括号

    var obj = {name:"X",出生日期:1980}

    console.log (obj["名称"]);

    console.log (obj["出生"]);

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

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

如果你想"访问"你的属性,你当然可以使用split()indexOf()来修改你的字符串并获得值,但这可能是一个棘手和困难的方法。

我认为没有理由不使用JSON.parse()访问您的对象的方式,它打算被使用。

将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/

因为变量string没有born-property。你有一个对象,你把它转换成字符串,如果你想从对象获得属性你必须使用对象。例如

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