如何将JSON对象转换为JavaScript对象
我正在尝试将包含的JSON对象数据转换为JavaScript对象`如何将JSON对象转换为JavaScript对象,javascript,json,Javascript,Json,我正在尝试将包含的JSON对象数据转换为JavaScript对象` { "base": "USD", "date": "2016-12-14", "rates": { "AUD": 1.3319, "BGN": 1.8375, "BRL": 3.311, "CAD": 1.3116, "CHF": 1.0097, "CNY": 6.9052, "CZK": 25
{
"base": "USD",
"date": "2016-12-14",
"rates": {
"AUD": 1.3319,
"BGN": 1.8375,
"BRL": 3.311,
"CAD": 1.3116,
"CHF": 1.0097,
"CNY": 6.9052,
"CZK": 25.388,
"DKK": 6.986,
"GBP": 0.78883,
"HKD": 7.7566,
"HRK": 7.0843,
"HUF": 295.84,
"IDR": 13288,
"ILS": 3.8097,
"INR": 67.479,
"JPY": 114.98,
"KRW": 1166,
"MXN": 20.262,
"MYR": 4.4441,
"NOK": 8.4764,
"NZD": 1.3849,
"PHP": 49.716,
"PLN": 4.1716,
"RON": 4.2421,
"RUB": 61.197,
"SEK": 9.1651,
"SGD": 1.424,
"THB": 35.59,
"TRY": 3.4879,
"ZAR": 13.67,
"EUR": 0.9395
}
}
到目前为止,我在console中尝试了什么
var text = $.getJSON('http://api.fixer.io/latest?base=GBP')
var obj = JSON.parse(text);
这给了我一个错误
var text = $.getJSON('http://api.fixer.io/latest?base=GBP')
var obj = JSON.stringify(text, 0, 2)
把一切都变成弦,这不是我想要的
我试图实现(在设法将它们转换为对象之后)
它将返回JSON对象数据中的值1.3319。谢谢如果您只需查看该请求的响应,就可以看到JSON位于
responseText
属性的内部。只要做:
var obj = JSON.parse(text.responseText);
此外,getJson是一个异步调用,因此您需要在回调中执行此操作,否则响应可能还不存在:
var obj;
var text = $.getJSON('http://api.fixer.io/latest?base=GBP', function() {
obj = JSON.parse(text.responseText);
});
编辑:正如评论员指出的,您也可以直接从responseJSON属性获取JSON:
var obj;
var text = $.getJSON('http://api.fixer.io/latest?base=GBP', function(){
obj = text.responseJSON;
});
jQuery为您解析JSON,但请求是异步的,因此它不会直接返回响应文本;相反,它返回一个
这应该适合您:
$.getJSON('http://api.fixer.io/latest?base=GBP').then( function ( obj ) {
console.log( obj );
} );
不要使用JSON.parse()
或JSON.stringify()
。如jquery文档$所示。getJSON(url,回调)
接受回调。另外,$.getJSON()在后台使用$.parseJSON(),因此默认情况下将对象传递到回调中
你的问题
var text=$.getJSON('http://api.fixer.io/latest?base=GBP“)
”这给了我一个错误。“错误是什么?我首先遇到了http/https错误,您可能想删除该协议。请阅读文档:。在Chrome中,它似乎已经在response中被解析。responseJSON您肯定也可以从responseJSON获得它!根据Paulpro的回答,JSON响应也作为参数传递给回调函数。
$.getJSON('http://api.fixer.io/latest?base=GBP').then( function ( obj ) {
console.log( obj );
} );
var text = $.getJSON('http://api.fixer.io/latest?base=GBP' , function(response){
console.log(response.rates.AUD);
})