将json转换为jsonp以将其用作回调

时间:2013-06-27 00:05:31

标签: javascript jquery json jsonp

我正在尝试使用数据api。我仍处于初步阶段,因此只需深入了解基本的管道。我找了一些研究来检查所涉及的变量,我发现我必须有一些服务器端脚本来处理json的跨域调用。基本上将它转换为jsonp。现在的问题是如何。我看了,但是没有真正看到符合我要求的方向。

这是在.json

中返回的api

http://data.cityofnewyork.us/resource/xm9j-adfx.json

这是一个代码示例:

[ {
  "consumption_gj_" : "83983",
  "zip_code" : {
    "needs_recoding" : false,
    "longitude" : "-73.99688630375988",
    "latitude" : "40.75025902143676",
    "human_address" : "{\"address\":\"\",\"city\":\"\",\"state\":\"\",\"zip\":\"10001\"}"
  },
  "building_type_service_class_" : "Commercial"
}
, {
  "consumption_gj_" : "91967",
  "zip_code" : {
    "needs_recoding" : false,
    "longitude" : "-73.98583147024613",
    "latitude" : "40.71612146793143",
    "human_address" : "{\"address\":\"\",\"city\":\"\",\"state\":\"\",\"zip\":\"10002\"}"
  },
  "building_type_service_class_" : "Commercial"
} ]

我想说打算从这里打印所有邮政编码

我该如何处理?

1 个答案:

答案 0 :(得分:0)

LIVE DEMO

var allZips = [];

$.getJSON('http://data.cityofnewyork.us/resource/xm9j-adfx.json', function(data) {

  for(i=0;i<data.length;i++){    
   allZips.push(  JSON.parse(data[i].zip_code.human_address).zip  );     
  }
  alert( allZips ); // 10001,10002,10003,10004,10005,10006,10007,......

});

你可以使用对象,直到最后一个是带有转义字符串的字符串:

"human_address" : "{\"address\":\"\",\"city\":\"\",\"state\":\"\",\"zip\":\"10001\"}"

这就是为什么你需要首先PARSE数据(将其转换为JSON)而不是检索zip值。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse