Анализ JSON API базы данных жалоб Socrata Consumerfinance.gov

Я хочу получить данные из базы данных жалоб Consumerfinance.gov с помощью Socrata API.

Данные легко получить с помощью инструкций на сайте http://www.consumerfinance.gov/complaintdatabase/technical-documentation/#api-documentation

Я использовал следующий запрос с «6yuf-367p», чтобы получить только данные о продукте «предоплаченная карта» и тег «.json», чтобы получить его в формате JSON:

http://data.consumerfinance.gov/api/views/6yuf-367p/rows.json

Я использовал PHP для получения данных с помощью этого запроса:

$url = "http://data.consumerfinance.gov/api/views/6yuf-367p/rows.json";
$json = file_get_contents($url);
$data = json_decode($json);
var_dump($data); 

Результаты перефразированы ниже. Несколько вещей о результатах, которые отличаются от того, что я ожидал.

  1. Я не ожидал раздела «Мета». Имена столбцов в разделе Meta не связаны напрямую с данными в формате {key: value}.

  2. Я ожидал, что раздел данных будет иметь формат {ключ: значение}, а не просто «значения». Это отличается от формата, описанного на странице справки Socrata по адресу http://dev.socrata.com/docs/formats/json.html

Я не продвинутый разработчик javascript, поэтому мне интересно, как лучше поступить. В идеале мне нужен только раздел «Данные» с именами столбцов в формате {ключ: значение}. Я хотел, чтобы это было в формате {ключ: значение} для использования с такими вещами, как Google Charts.

Я предполагаю, что мне придется сохранить имена столбцов в массиве, а затем прокрутить каждую строку данных и переписать строки данных с включенными именами столбцов, чтобы получить формат {ключ: значение}.

Мой другой вариант - использовать формат API csv, который очень чистый, с красивыми чистыми столбцами и без мета-раздела. Но тогда мне пришлось бы преобразовать csv в JSON, что кажется ненужным, поскольку JSON доступен.

CSV-запрос таков:

http://data.consumerfinance.gov/api/views/6yuf-367p/rows.csv

Итак, пара вопросов:

  1. Предоставляет ли Socrata канал API без раздела «Мета»? Есть ли фильтр, который я могу использовать, чтобы исключить раздел «Мета»?

  2. Если ответ на № 1 отрицательный, есть ли у Socrata готовый javascript для анализа JSON, чтобы получить раздел «Данные» в формате {ключ: значение}, аналогичном формату, как описано на странице справки Socrata?

Спасибо!

    {
    "meta" : {
    "view" : {
    "id" : "6yuf-367p",
    "name" : "Prepaid Card Complaints",
    "averageRating" : 0,
    "createdAt" : 1434039311,

     etc etc

    "columns" : [ {
    "id" : -1,
    "name" : "sid",
    "dataTypeName" : "meta_data",
    "fieldName" : ":sid",
    "position" : 0,
    "renderTypeName" : "meta_data",
    "format" : {
    }
    }, {

    etc etc

    "data" : [ [ 208134, "A7A3941C-A764-44CA-ABC0-66DE814F1969", 208134, 1438091214, "924763", 1438091214, "924763", null, "2015-07-13T00:00:00", "Prepaid card", "General purpose card", "Managing, opening, or closing account", null, null, null, "Amex", "WA", "982XX", "Web", "2015-07-19T00:00:00", "Closed with monetary relief", "Yes", null, "1464043" ]

    ......

    ]
    }

person curtisp    schedule 28.07.2015    source источник


Ответы (1)


Похоже, вы захватили неправильный URL-адрес JSON. Тот, который вы захватили, предназначен для экспорта JSON, который выдаст вам весь набор данных в формате JSON вместе со всеми метаданными, и он не предоставляет запрашиваемую конечную точку API.

Вместо этого следует использовать конечную точку https://data.consumerfinance.gov/resource/jhzv-w97w.json. Это даст вам {"key" : "value"} пары, которые вы ищете, например:

[ {
  "zip_code" : "982XX",
  "complaint_id" : "1464043",
  "issue" : "Managing, opening, or closing account",
  "date_received" : "2015-07-13T00:00:00",
  "state" : "WA",
  "product" : "Prepaid card",
  "company_response" : "Closed with monetary relief",
  "company" : "Amex",
  "submitted_via" : "Web",
  "date_sent_to_company" : "2015-07-19T00:00:00",
  "sub_product" : "General purpose card",
  "timely" : "Yes"
}, ... ]

Вы также можете просмотреть документы API для этого набора данных по адресу: http://dev.socrata.com/foundry/#/data.consumerfinance.gov/jhzv-w97w

Удачи, и дайте мне знать, если у вас есть еще вопросы.

person chrismetcalf    schedule 28.07.2015
comment
А, это больше похоже! Спасибо - person curtisp; 29.07.2015