Проблема формата JSON при использовании фактических геоданных - PullRequest
1 голос
/ 25 сентября 2011

Я использую 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"
}

Ответы [ 3 ]

1 голос
/ 26 сентября 2011

Если вы знаете имя поля и данные не гарантируются в том же порядке, я бы сделал преобразование для данных, чтобы я мог ссылаться на поля по имени:

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]);
}
1 голос
/ 26 сентября 2011
// 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/

0 голосов
/ 16 декабря 2011

Я работаю в Factual. Просто хотел упомянуть, что мы запустили бета версию 3 нашего API. Версия 3 решает эту проблему напрямую, включая ключи атрибутов, встроенные в результаты, как и следовало ожидать. (Ваш вопрос относится к версии 2 нашего API. Если вам удастся перейти на версию 3, вы найдете и другие приятные улучшения.; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...