如何使用jquery或javascript在JSON中获取对象

时间:2011-09-19 14:02:45

标签: javascript jquery json

我是JSON的新手

如何向html显示以下数据。对于样本我想从'西南'显示'lat'和'lng',或者我想显示'text'。

  

{“routes”:[         {            “bounds”:{               “东北”:{                  “lat”: - 26.758340,                  “lng”:153.035930               },               “西南”:{                  “lat”: - 27.454070,                  “lng”:152.852150               }            },            “copyright”“:”地图数据©2011 GBRMPA,Google,Whereis(R),   Sensis Pty Ltd“,            “腿”:[               {                  “距离”:{                     “文字”:“89.7公里”,                     “价值”:89693                  },                  “持续时间”:{                     “文字”:“1小时17分钟”,                     “价值”:4633                  },                  “end_address”:“Maleny QLD 4552,Australia”,                  “end_location”:{                     “lat”: - 26.758420,                     “lng”:152.852150                  },                  “start_address”:“布里斯班昆士兰州,澳大利亚”,                  “start_location”:{                     “lat”: - 27.454070,                     “lng”:153.026880                  },               }           ]       }       ]}

干杯!

3 个答案:

答案 0 :(得分:3)

假设数据是你的json,你可以使用$ .parseJSON(data)来获取对象。
顺便说一下,你的例子中的json是无效的 - 你最后有两个额外的昏迷。以下是使用有效json的示例:

var data = '{ "routes" : [ { "bounds" : { "northeast" : { "lat" : -26.758340, "lng" : 153.035930 }, "southwest" : { "lat" : -27.454070, "lng" : 152.852150 } }, "copyrights" : "Map data ©2011 GBRMPA, Google, Whereis(R), Sensis Pty Ltd", "legs" : [ { "distance" : { "text" : "89.7 km", "value" : 89693 }, "duration" : { "text" : "1 hour 17 mins", "value" : 4633 }, "end_address" : "Maleny QLD 4552, Australia", "end_location" : { "lat" : -26.758420, "lng" : 152.852150 }, "start_address" : "Brisbane QLD, Australia", "start_location" : { "lat" : -27.454070, "lng" : 153.026880 } } ] } ] }';
var routes = $.parseJSON(data).routes;

现在routes是路由对象的javascript数组。例如,routes[0].copyrights返回“地图数据©2011 GBRMPA,Google,Whereis(R),Sensis Pty Ltd”。希望这有帮助!

答案 1 :(得分:3)

正如Georgi所说,使用$.parseJSON(data)

然后,要访问latlng属性,您可以使用点表示法:

var data = ''; // json string here
var jsonObject = $.parseJSON(data);
var lat = jsonObject.routes[0].bounds.northeast.lat;
var lng = jsonObject.routes[0].bounds.northeast.lng;

因为routes是一个数组对象,我们使用常规数组元素访问器([])来访问第一个元素(0)。

答案 2 :(得分:0)

你的json字符串可能已被解析,你可以从ajax服务获取一个json对象,如果你想要某个json对象或子对象的值,你可以像这样获取它:

var data = {here goes your whole json object you have above...};
var southwestLong = data.routes[0].bounds.southwest.lng;

基本上,解析被遗漏了,因为它已经作为json对象进入。

但是在大​​多数情况下,你会在所有路径对象上编写一些循环,例如循环,以便在列表中渲染它们。

另外,我建议您测试某个要定义的项目。因为如果传入一个更改过的json对象,例如它有0个路由,则上面的代码会出错,因为data.routes[0]不存在。