gpt4 book ai didi

json - 无法从 ruby​​ 中解析的 JSON 哈希中提取数据

转载 作者:数据小太阳 更新时间:2023-10-29 08:42:19 24 4
gpt4 key购买 nike

我正在尝试从此 API 响应中提取元素,但由于某种原因我无法做到。我有以下 API 响应正文:`

[
{
"ID": "295699",
"restriction": [
{
"restrictionTypeCode": "10001"
}
]
}
]

`现在,我只想打印 restrictionTypeCode

  json_string = RestClient.get "#{$uri}", {:content_type => 'application/json'}
hash = JSON.parse(json_string)
code= hash['restriction']['restrictionTypeCode']
puts code

上面的代码出错了,没有显示restrictionTypeCode

最佳答案

您的问题是您的数据在某些地方返回数组。尝试以下操作:

data = [
{
"ID": "295699",
"restriction": [
{
"restrictionTypeCode": "10001"
}
]
}
]

data.first[:restriction].first[:restrictionTypeCode]
# to make this safe from any nil values you may encounter, you might want to use
data.first&.dig(:restriction)&.first&.dig(:restrictionTypeCode)
# => "10001"

# or

data.flat_map { |hsh| hsh[:restriction]&.map { |sub_hsh| sub_hsh[:restrictionTypeCode] } }
# => ["10001"]

稍微分解一下,您的顶级响应和落在键 :restriction 下的响应都返回数组;因此,要从它们获取数据,您需要访问它们包含的其中一项(在我的示例中使用 first)或映射它们(第二个示例)。

我在其中添加了一些对 nil 值的检查:这在处理 API 响应时非常重要,因为您无法控制数据,因此无法确定所有字段将在场。如果遇到这样的数据,您不会抛出错误,而是返回 nil 以避免破坏后续代码。

希望这对您有所帮助 - 如果您有任何问题,请告诉我您的情况:)

关于json - 无法从 ruby​​ 中解析的 JSON 哈希中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58060021/

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