如何从 Rails 上的 Ruby 中的 JSON 中提取数据
How to extract data from JSON in Ruby on Rails
我收到了来自 httparty 的 JSON 回复:
{
"banks": [{
"sync_frequency": null,
"code": null,
"uuid": "2ac14818-59fb-50cf-b3e4-3bddcdfefcae",
"documents_type": [],
"color": "003d8f",
"id": 479,
"available_transfer_mechanisms": [],
"auth_mechanism": "credentials",
"capabilities": ["document"],
"transfer_beneficiary_types": [],
"available_auth_mechanisms": ["credentials"],
"beta": true,
"months_to_fetch": null,
"urls": ["https://login.ionos.fr", "https://my.ionos.fr"],
"siret": null,
"hidden": false,
"charged": true,
"slug": "1&1",
"categories": [],
"name": "1&1"
}, {
"sync_frequency": null,
"code": null,
"uuid": "fabe9547-ba74-5f8c-a790-f5ecc7c4626b",
"documents_type": [],
"color": "ffa500",
"id": 492,
"available_transfer_mechanisms": [],
"auth_mechanism": "credentials",
"capabilities": ["document"],
"transfer_beneficiary_types": [],
"available_auth_mechanisms": ["credentials"],
"beta": true,
"months_to_fetch": null,
"urls": ["http://www.avantages-entreprises.com"],
"siret": null,
"hidden": false,
"charged": true,
"slug": "ACE",
"categories": [],
"name": "aceos"
}, {
"sync_frequency": null,
"code": null,
"uuid": "5f778b18-d10e-5ffd-98a9-ed61d1d39f9b",
"account_types": ["perp", "madelin", "lifeinsurance"],
"documents_type": [],
"color": "005090",
"id": 406,
"available_transfer_mechanisms": [],
"auth_mechanism": "credentials",
"capabilities": ["bankwealth", "document", "bank"],
"transfer_beneficiary_types": [],
"available_auth_mechanisms": ["credentials"],
"beta": false,
"months_to_fetch": null,
"urls": ["https://identification.adis-assurances.com", "https://www.agipi.com", "https://connexion.adis-assurances.com"],
"siret": null,
"hidden": false,
"charged": true,
"slug": "AGI",
"categories": [],
"name": "Agipi"
}]
}
我尝试获取所有 "name"
值,例如 "1&1"
、"aceos"
、"Agipi"
等...
知道如何获得它们吗?
谢谢
这看起来像是一个不完整的 JSON 回复。
试试 JSON.parse
、[]
和 map
:
require 'json'
JSON.parse(foo)['banks'].map { |e| e['name'] } # ["1&1", "aceos", "Agipi"]
我收到了来自 httparty 的 JSON 回复:
{
"banks": [{
"sync_frequency": null,
"code": null,
"uuid": "2ac14818-59fb-50cf-b3e4-3bddcdfefcae",
"documents_type": [],
"color": "003d8f",
"id": 479,
"available_transfer_mechanisms": [],
"auth_mechanism": "credentials",
"capabilities": ["document"],
"transfer_beneficiary_types": [],
"available_auth_mechanisms": ["credentials"],
"beta": true,
"months_to_fetch": null,
"urls": ["https://login.ionos.fr", "https://my.ionos.fr"],
"siret": null,
"hidden": false,
"charged": true,
"slug": "1&1",
"categories": [],
"name": "1&1"
}, {
"sync_frequency": null,
"code": null,
"uuid": "fabe9547-ba74-5f8c-a790-f5ecc7c4626b",
"documents_type": [],
"color": "ffa500",
"id": 492,
"available_transfer_mechanisms": [],
"auth_mechanism": "credentials",
"capabilities": ["document"],
"transfer_beneficiary_types": [],
"available_auth_mechanisms": ["credentials"],
"beta": true,
"months_to_fetch": null,
"urls": ["http://www.avantages-entreprises.com"],
"siret": null,
"hidden": false,
"charged": true,
"slug": "ACE",
"categories": [],
"name": "aceos"
}, {
"sync_frequency": null,
"code": null,
"uuid": "5f778b18-d10e-5ffd-98a9-ed61d1d39f9b",
"account_types": ["perp", "madelin", "lifeinsurance"],
"documents_type": [],
"color": "005090",
"id": 406,
"available_transfer_mechanisms": [],
"auth_mechanism": "credentials",
"capabilities": ["bankwealth", "document", "bank"],
"transfer_beneficiary_types": [],
"available_auth_mechanisms": ["credentials"],
"beta": false,
"months_to_fetch": null,
"urls": ["https://identification.adis-assurances.com", "https://www.agipi.com", "https://connexion.adis-assurances.com"],
"siret": null,
"hidden": false,
"charged": true,
"slug": "AGI",
"categories": [],
"name": "Agipi"
}]
}
我尝试获取所有 "name"
值,例如 "1&1"
、"aceos"
、"Agipi"
等...
知道如何获得它们吗? 谢谢
这看起来像是一个不完整的 JSON 回复。
试试 JSON.parse
、[]
和 map
:
require 'json'
JSON.parse(foo)['banks'].map { |e| e['name'] } # ["1&1", "aceos", "Agipi"]