0

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

使用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. 我期待 Data 部分具有 { key: value } 格式,而不仅仅是“值”。这与http://dev.socrata.com/docs/formats/json.html的 Socrata 帮助页面上描述的格式不同

我不是高级 javascript 开发人员,所以我想知道如何最好地进行。理想情况下,我只想要 { key: value } 格式的列名的“数据”部分。我希望它以 { key: value } 格式与 Google Charts 之类的东西一起使用。

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

我的另一个选择是使用超级干净的 csv API 格式,带有漂亮干净的列并且没有 Meta 部分。但是我必须将 csv 转换为 JSON,这似乎没有必要,因为 JSON 可用。

CSV 查询是这样的:

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

所以几个问题:

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

  2. 如果对#1 的回答是否定的,那么 Socrata 是否已准备好 javascript 来解析 JSON 以获取 { key: value } 格式的“数据”部分,格式与 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" ]

    ......

    ]
    }
4

1 回答 1

1

看起来您获取了错误的 JSON URL。您抓取的是 JSON export,它将以 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

祝你好运,如果您有更多问题,请告诉我。

于 2015-07-28T23:24:15.657 回答