gpt4 book ai didi

ruby - 排序 JSON 值?

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:42 24 4
gpt4 key购买 nike

我有一个像这样的 JSON 列表:

response = '{"ContainsErrors":false,"Result":[{"Name":"Aegypten","IsoCode":"EG"},{"Name":"Aequatorialguinea","IsoCode":"GQ"},{"Name":"Aethiopien","IsoCode":"ET"},{"Name":"Afghanistan","IsoCode":"AF"},{"Name":"Albanien","IsoCode":"AL"},{"Name":"Algerien","IsoCode":"DZ"},{"Name":"Angola","IsoCode":"AO"},{"Name":"Antigua und Barbuda","IsoCode":"AG"},{"Name":"Argentinien","IsoCode":"AR"},{"Name":"Australien","IsoCode":"AU"},{"Name":"Bahamas","IsoCode":"BS"}]}'

我怎样才能让它按名字排序?

response.sort_by { |k, v| v["Name"] }

不起作用。

有效的是:

response = RestClient.get("#{Settings.itineris.url}/de/RepInfo/#{action}")
#response = '{"ContainsErrors":false,"Result":[{"Name":"Aegypten","IsoCode":"EG"},{"Name":"Aequatorialguinea","IsoCode":"GQ"},{"Name":"Aethiopien","IsoCode":"ET"},{"Name":"Afghanistan","IsoCode":"AF"},{"Name":"Albanien","IsoCode":"AL"},{"Name":"Algerien","IsoCode":"DZ"},{"Name":"Angola","IsoCode":"AO"},{"Name":"Antigua und Barbuda","IsoCode":"AG"},{"Name":"Argentinien","IsoCode":"AR"},{"Name":"Australien","IsoCode":"AU"},{"Name":"Bahamas","IsoCode":"BS"}]}'

JSON.load(response)['Result']

结果是一个未排序的列表。如何获得国家名称的有序列表?

最佳答案

您有一个字符串作为响应。在对其进行操作之前,您应该将其转换为Hash:

response = '{"ContainsErrors":false,"Result":[{"Name":"Aegypten","IsoCode":"EG"}]}'
require 'json'
hash = JSON.parse(response)

然后做任何你想做的:

hash['Result'].sort_by { |v| v["Name"] }
# ⇑ v here since it’s an array of hashes

获取国家名称的有序列表:

hash['Result'].map { |v| v["Name"] }.sort

关于ruby - 排序 JSON 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21308250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com