如何从字符串形式的JSON对象中获取MovieTitle字段值?
解决字符串JSON转对象后获取属性的问题
嘿,我明白你遇到的问题了!你现在拿到的是字符串形式的JSON,不是真正的JavaScript对象,所以直接赋值给products后,用Object.values()才会得到单个字符组成的数组——因为此时products本质是一串文本,不是可直接访问属性的对象。
问题根源
当你直接把input标签的value赋值给products时,它的类型是字符串(比如"{\"OrderId\":XXXXXX,\"IsPrebuy\":true,...}"),JavaScript会把它当作字符串处理。Object.values()对字符串执行时,会将字符串拆分为单个字符的数组,这显然不是你想要的结果。
解决方案:先解析JSON字符串为JS对象
你需要先用JSON.parse()方法把字符串格式的JSON转换成真正的JavaScript对象,之后就能正常访问对象的属性了。
完整代码示例
// 1. 获取input的value(字符串形式的JSON) const inputJsonStr = document.querySelector('input').value; // 2. 解析字符串为JavaScript对象 const products = JSON.parse(inputJsonStr); // 3. 直接访问MovieTitle属性 const movieTitle = products.MovieTitle; // 或者用方括号语法:products['MovieTitle'] console.log(movieTitle); // 输出:"Joker"
额外说明
当products是真正的对象后,再使用Object.values(products)就会得到对象所有值组成的数组:
console.log(Object.values(products)); // 输出:[XXXXXX, true, false, "2019-11-19", 0, "Joker"]
不过如果你只需要MovieTitle的取值,直接通过属性访问的方式会更高效直接。
内容的提问来源于stack exchange,提问作者Gustav
相关产品推荐
相关产品推荐

