在未命名的json数组url中检索值
retrieve value in unnamed json array url
我很难在这个url中检索json上的一些值:
http://go-gadget.googlecode.com/svn/trunk/test.json
url数据如下所示:
[
{
"key":{
"parentKey":{
"kind":"user",
"id":0,
"name":"test 1"
},
"kind":"smsgateway",
"id":5707702298738688
},
"propertyMap":{
"content":"test1 content",
"date":"Dec 12, 2013 2:58:57 PM",
"user":"test1"
}
}]
通过忽略"键",我想使用javascript代码访问"propertyMap"对象的值(内容、日期和用户)。我尝试过这个代码,但无法得到结果:
var url = "http://go-gadget.googlecode.com/svn/trunk/test.json";
$.getJSON(url, function (json) {
for (var i = 0; i < json.length; i = i + 1) {
var content = json[i].propertyMap.content;
console.log('content : ', content);
var user = json[i].propertyMap.user;
console.log('user: ', user);
var date = json[i].propertyMap.date;
console.log('date : ', date);
}
});
(此处为不成功代码http://jsfiddle.net/KkWdN/)
考虑到这个json不能更改,我从上面的代码中犯了什么错误吗?或者有其他技术可以得到结果吗?
我只学习了一个月的javascript和json,所以非常感谢通过一个例子做出的回应。
--edited:我将[].length更改为json.length,现在我正在寻找访问url 的答案
这将类似于:
$.getJSON("http://go-gadget.googlecode.com/svn/trunk/test.json", function(json) {
for (var i = 0; i < json.length; i++) {
var map = json[i].propertyMap;
var content = map.content;
var user = map.user;
var date = map.date;
$('#date').text(date);
$('#nohp').text(user);
$('#content').text(content);
}
});
但请求失败,因为请求的资源上不存在"Access Control Allow Origin"标头,因此您被同源策略
你觉得[].length怎么样将评估为。
它是0,所以它永远不会进入for循环。
除此之外,你的代码看起来还可以。
将for循环替换为以下
$.getJSON(url, function (json) {
for (var i = 0; i < json.length; i = i + 1) {
此外,您似乎正在访问作为不同域的一部分的API。因此,如果您想从不同的域检索数据,则需要使用CORS或JSONP来实现此功能。
更改:
for (var i = 0; i < [].length; i = i + 1) {
至
for (var i = 0; i < json.length; i = i + 1) {
此处演示
使用以下内容如何在你的情况下,假设对象是myObj,我会得到这样的值
var content = fetchValue(myObj, [0, "propertyMap", "content"], "");
var date = fetchValue(myObj, [0, "propertyMap", "date"], new Date());
var user = fetchValue(myObj, [0, "propertyMap", "user"], "");
只是为了确保我们发送一个默认值,以防我们没有得到所需的ojbect。这种方法的美妙之处在于,现在您不必担心数组或嵌套在结构中的对象。fetchValue函数可能如下所示。
function fetchValue(object, propertyChain, defaultValue){
var returnValue;
try{
returnValue = object;
forEach(propertyChain, function(element){
returnValue = returnValue[element];
});
}catch(err){
return defaultValue;
}
if(returnValue == undefined) {
returnValue = defaultValue;
}
return returnValue;
}
添加forEach功能
function forEach(array, action){
for(var x in array)
action(array[x]);
}
相关文章:
- 存储和检索图像数据URL
- Imgur|检索给定相册链接的直接图像URL
- 用于存储、检索和附加到url的javascript cookie
- 在未命名的json数组url中检索值
- JQuery:从URL检索数据
- Javascript REGEX:需要从嵌入URL中检索ID以及开始和结束时间
- Parse.com-在JavaScript SDK中模板化集合时检索图像URL
- 检索URL中编码的JSON
- 如何使用正则表达式或 jQuery 检索 URL 的最后一部分
- 将图像上传到服务器(picasa/dropbox/etc)并检索url以将其保存在我的数据库中
- 检索URL参数以预先选择多选列表-提线木偶
- node+handlers:动态创建和检索url路径
- 尝试使用jQuery检索URL的一部分;它是有效的,但是字符串是无效的;t返回
- 从函数中检索Url参数
- 如何检索url inAppBrowser当前在
- 在JavaScript中检索URL字符串以生成JSON对象
- 检索url中后跟#的字符串
- 从JSON对象值中检索URL
- 如何在JavaScript中检索URL查询参数
- js:在重定向后检索URL参数