在json数据中获取嵌套映射
Getting a nested map within json data
我有这样的JSON数据:
var data = '{"credit":{"@code":"NT2C8FFC","card":"NT2C8FFC","credit":"149.96","amount":"149.96","disabled":"0","expired":"2011-02-15 10:21:18","user":"xxxx","issued":"2010-02-15 10:21:18","orderid":[],"fromorder":[],"email":"xxxx","phone":[],"state":[],"address":[],"city":[],"zip":[],"country":[],"customerid":"xxx","order":"xxx","order_date":"2010-01-23 00:00:00","reason":"Product Not Working as Expected","source":"xxx","first":[],"last":[],"notes":[]}}'
它实际上作为JSON返回给我。举个例子,我只是像这样把它展示出来。我可以用data["credit"]
来得到元素credit
但那只能得到:
{"@code":"NT2C8FFC","card":"NT2C8FFC","credit":"149.96","amount":"149.96","disabled":"0","expired":"2011-02-15 10:21:18","user":"xxxx","issued":"2010-02-15 10:21:18","orderid":[],"fromorder":[],"email":"xxxx","phone":[],"state":[],"address":[],"city":[],"zip":[],"country":[],"customerid":"xxx","order":"xxx","order_date":"2010-01-23 00:00:00","reason":"Product Not Working as Expected","source":"xxx","first":[],"last":[],"notes":[]}
如何深入到一个镜头?data["credit"]["credit"]
语法不正确。结果是undefined。我知道我很接近了,但不记得剩下的了。目标是从JSON数据中获取149.96
。
目前您可以使用alert(data.credit.credit)
。
var data = '{"credit":{"@code":"NT2C8FFC","card":"NT2C8FFC","credit":"149.96","amount":"149.96","disabled":"0","expired":"2011-02-15 10:21:18","user":"xxxx","issued":"2010-02-15 10:21:18","orderid":[],"fromorder":[],"email":"xxxx","phone":[],"state":[],"address":[],"city":[],"zip":[],"country":[],"customerid":"xxx","order":"xxx","order_date":"2010-01-23 00:00:00","reason":"Product Not Working as Expected","source":"xxx","first":[],"last":[],"notes":[]}}';
eval("data=" + data);
alert(data.credit.credit);
您也可以使用data = JSON.parse(data);
将字符串转换为Json,但这有浏览器兼容性问题。
这些浏览器支持
- Firefox (Mozilla) 3.5
- Internet Explorer 8 Chrome Opera 10 列表项
- Safari 4
旧版本不支持。
使用.
运算符获取对象的对象
alert(data.credit.credit) //gives 149.96
alert(data.credit.amount) //gives 149.96
alert(data.credit.card) //gives NT2C8FFC
您正在使data
成为字符串而不是对象。把
var data = '{"credit":{"@code":"NT2C8FFC","card":"NT2C8FFC","credit":"149.96","amount":"149.96","disabled":"0","expired":"2011-02-15 10:21:18","user":"xxxx","issued":"2010-02-15 10:21:18","orderid":[],"fromorder":[],"email":"xxxx","phone":[],"state":[],"address":[],"city":[],"zip":[],"country":[],"customerid":"xxx","order":"xxx","order_date":"2010-01-23 00:00:00","reason":"Product Not Working as Expected","source":"xxx","first":[],"last":[],"notes":[]}}'
var data = {"credit":{"@code":"NT2C8FFC","card":"NT2C8FFC","credit":"149.96","amount":"149.96","disabled":"0","expired":"2011-02-15 10:21:18","user":"xxxx","issued":"2010-02-15 10:21:18","orderid":[],"fromorder":[],"email":"xxxx","phone":[],"state":[],"address":[],"city":[],"zip":[],"country":[],"customerid":"xxx","order":"xxx","order_date":"2010-01-23 00:00:00","reason":"Product Not Working as Expected","source":"xxx","first":[],"last":[],"notes":[]}}
如果不能更改原始数据,则需要执行
来解析它。data = JSON.parse(data);
(这将在大多数浏览器中工作)或使用库中的方法,如JQuery的:
data = jQuery.parseJSON(data);
相关文章:
- immutable.js与嵌套映射/对象的比较/相等性能
- 有没有一种简单的方法可以用Lodash映射嵌套数据
- 挖空映射 - 使用键唯一标识嵌套对象
- 通过Javascript中的递归迭代映射嵌套JSON
- 将多个链接表映射到嵌套的JQuery手风琴
- KNOCKOUTJS 映射嵌套元素不是绑定的
- 从数组中的键遍历嵌套映射/对象
- 使用 ng 重复映射嵌套值
- 映射嵌套的 KO 视图模型
- 映射到嵌套组件的 Elm 效果
- 如何映射嵌套对象的数组
- 嵌套json的Knockout映射
- 在Immutable.js映射中查找嵌套对象的最佳方法
- Node.js automapper ts包未映射嵌套对象/属性
- 映射和绑定嵌套对象和数组
- 使用forEach、映射或筛选器克隆和操作嵌套对象,而不修改原始对象
- 在嵌套映射中的作用域
- 在json数据中获取嵌套映射
- 嵌套映射和筛选方法
- 存储实例用于嵌套映射/对象