我正在使用事实api来获取位置数据。它们的restful服务以JSON格式返回数据,如下所示,但它们使用的不是“常用”JSON格式。没有属性键,相反,有一个“字段”来解释所有的字段键。
所以问题是如何检索我需要的属性?如果可能的话,请举个例子。提前谢谢。
{
"response": {
"total_rows": 2,
"data": [
[
"ZPQAB5GAPEHQHDy5vrJKXZZYQ-A",
"046b39ea-0951-4add-be40-5d32b7037214",
"Hanko Sushi Iso Omena",
60.16216,
24.73907
],
[
"2TptHCm_406h45y0-8_pJJXaEYA",
"27dcc2b5-81d1-4a72-b67e-2f28b07b9285",
"Masabi Sushi Oy",
60.21707,
24.81192
]
],
"fields": [
"subject_key",
"factual_id",
"name",
"latitude",
"longitude"
],
"rows": 2,
"cache-state": "CACHED",
"big-data": true,
"subject_columns": [
1
]
},
"version": "2",
"status": "ok"
}发布于 2011-09-26 04:18:50
如果您知道字段名称,并且不能保证数据保持相同的顺序,那么我将对数据进行转换,这样我就可以按名称引用字段:
var fieldIndex = {}
for (key in x.response.fields)
{
fieldIndex[x.response.fields[key]] = key;
}
for (key in x.response.data)
{
alert(x.response.data[key][fieldIndex.name]);
}发布于 2011-09-26 04:14:28
// Field map
var _subject_key = 0,
_factual_id = 1,
_name = 2,
_latitude = 3,
_longitude = 4;
// Example:
alert(_json.response.data[0][_factual_id]);演示:http://jsfiddle.net/AlienWebguy/9TEJJ/
发布于 2011-12-16 06:53:57
我在Factual工作。我只想提一下,我们已经推出了API第三版的测试版。正如您所希望的那样,版本3通过在结果中包含属性键直接解决了这个问题。(您的问题适用于我们的API版本2。如果您能够升级到版本3,您还会发现其他一些不错的改进。;-)
https://stackoverflow.com/questions/7548202
复制相似问题