【问题标题】:Convert JSON to string or hash in ruby在 ruby​​ 中将 JSON 转换为字符串或哈希
【发布时间】:2013-07-06 20:34:48
【问题描述】:

我试过了:

require 'net/http'
require 'json'
require 'pp'
require 'uri'

url = "http://xyz.com"
resp = Net::HTTP.get_response(URI.parse(url))
buffer = resp.body
result = JSON.parse(buffer)
#result.to_hash
    #pp result
puts result  

得到的输出为:

{"id"=>"ABC", "account_id"=>"123", "first_name"=> "PEUS" }

JSON 格式,但我只需要将id 的值打印为ABC

【问题讨论】:

    标签: ruby json string hash


    【解决方案1】:

    您传入的 JSON 字符串如下所示:

    {"id":"ABC","account_id":"123","first_name":"PEUS"}
    

    用 JSON 解析后就是哈希:

    {"id"=>"ABC", "account_id"=>"123", "first_name"=> "PEUS" }
    

    所以,我会使用:

    hash = {"id"=>"ABC", "account_id"=>"123", "first_name"=> "PEUS" }
    hash['id'] # => "ABC"
    

    这是一个更紧凑的版本:

    require 'json'
    
    json = '{"id":"ABC","account_id":"123","first_name":"PEUS"}'
    hash = JSON[json]
    hash['id'] # => "ABC"
    

    注意我使用的是JSON[json]。 JSON[] 类方法足够智能,可以感知传入的参数是什么。如果它是一个字符串,它将解析该字符串。如果它是一个数组或哈希,它会序列化它。我觉得这很方便,因为它允许我编写 JSON[...] 而不必记住我是在解析还是在使用 to_json 或其他东西。使用它是the first virtue of programmers 的一个例子。

    【讨论】:

    • 我们能否采用自动化流程,而不是手动选择 JSON 并将其映射为哈希。我不想手动为数千条记录做同样的事情。
    • 这就是我们编写代码来自动化任务的原因。你根本没有描述你的额外需求,所以我帮不了你太多。我建议学习如何获取目录条目,以及打开和读取文件。
    • 假设如果我使用多个值访问 URL,那么我无法对其进行硬编码
    • 我可以得到 id:ABC account_id:123 first_name:PEUS 我将代码更改为:hash = JSON[buffer] hash[0].each do |key,value|将“#{key}:#{value}”结束但我仍然只需要 ID 的值
    • 我帮不了你。您没有提供真实的 URL,您的示例数据也与您在评论中显示的代码不匹配,顺便说一句,这几乎是不可读的,因为您将其粘贴在您的评论中,而不是将其附加到您的答案中。 是否您的 JSON 看起来像我在回答中显示的那样?是单个哈希吗?
    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 2014-09-24
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2019-12-19
    • 1970-01-01
    相关资源
    最近更新 更多