Socrata consumerfinance.gov投诉数据库APIJSON解析

Socrata consumerfinance.gov complaintdatabase API JSON parsing

我想使用 Socrata API 检索 consumerfinance.gov 投诉数据库数据。

使用 http://www.consumerfinance.gov/complaintdatabase/technical-documentation/#api-documentation

网站上的说明检索数据很简单

我将以下查询与“6yuf-367p”一起使用以获取 'prepaid card' 产品数据,并使用“.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' 部分。列名位于 Meta 部分,与 { key: value } 格式的数据没有直接关联。

  2. 我希望数据部分具有 { key: value } 格式,而不仅仅是 'values'。这与 Socrata 帮助页面上描述的格式不同 http://dev.socrata.com/docs/formats/json.html

我不是高级 javascript 开发人员,所以我想知道如何最好地进行。理想情况下,我只需要 'Data' 部分的列名采用 { key: value } 格式。我希望它以那种 { key: value } 格式与 Google 图表一起使用。

我想象我必须将列名保存在数组中,然后遍历每个数据行并重写包含列名的数据行以获得 { key: value } 格式。

我的另一个选择是使用 csv API 格式,这种格式超级干净,列非常干净,没有 Meta 部分。但是然后我必须将 csv 转换为 JSON 这似乎是不必要的,因为 JSON 可用。

CSV 查询是这样的:

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

几个问题:

  1. socrata 是否提供没有 'Meta' 部分的 API 提要?有没有我可以用来排除 'Meta' 部分的过滤器?

  2. 如果 #1 的答案是否定的,Socrata 是否准备好 [=7​​4=] 解析 JSON 以获得 { key: value } 中的 'Data' 部分格式与 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" ]

    ......

    ]
    }

看来你抓错了JSONURL。您抓取的那个用于 JSON export,它将以 JSON 格式向您转储整个数据集以及所有元数据,但它不会t 提供可查询的 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

祝你好运,如果您还有其他问题,请告诉我。