我正在使用Factual 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"
}
答案 0 :(得分:1)
// Field map
var _subject_key = 0,
_factual_id = 1,
_name = 2,
_latitude = 3,
_longitude = 4;
// Example:
alert(_json.response.data[0][_factual_id]);
答案 1 :(得分:1)
如果您知道字段名称,并且不保证数据保持相同的顺序,我会对数据进行转换,以便我可以按名称引用字段:
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]);
}
答案 2 :(得分:0)
我在Factual工作。只是想提一下,我们已经推出了我们API的第3版测试版。版本3通过包含与结果内联的属性键直接解决了这个问题,正如您所希望的那样。 (您的问题适用于我们API的第2版。如果您能够升级到版本3,您还会发现其他一些不错的改进。; - )