【问题标题】:How can I parse a String(not a json object) which is in jsonArray format in rails?如何解析rails中jsonArray格式的字符串(不是json对象)?
【发布时间】:2015-07-30 04:54:42
【问题描述】:

这是我的值字符串形式的 JSON 数组(不是 JSON 对象)

value= "[{\"a\":\"test a\"},{\"b\":\"test b updated\"}]"

当我尝试使用将其转换为 JSON 时

value=value.to_json
#value= "\"[{\\\"a\\\":\\\"test a\\\"},{\\\"b\\\":\\\"test b updated\\\"}]\""

但我想要这样的价值

{"a":"test a","b":"test b updated"}

有什么建议吗?

【问题讨论】:

    标签: json ruby-on-rails-4


    【解决方案1】:

    首先你需要将 JSON 字符串转换为 Ruby 值:

    arr = JSON.parse(value)
    # => [ { "a" => "test a" },
    #      { "b" => "test b updated" } ]
    

    这将返回一个 Ruby 数组,其项目是哈希值。

    接下来您需要将散列合并为一个散列:

    combined_hash = arr.reduce({}, &:merge)
    # => { "a" => "test a",
    #      "b" => "test b updated" }
    

    最后,将哈希转回 JSON:

    puts combined_hash.to_json
    # => {"a":"test a","b":"test b updated"}
    

    大家一起:

    arr = JSON.parse(value)
    combined_hash = arr.reduce({}, &:merge)
    puts combined_hash.to_json
    # => {"a":"test a","b":"test b updated"}
    

    你可以在这里看到它的实际效果:http://ideone.com/l5BAiw

    【讨论】:

    • 非常感谢 Jordan。你拯救了我的一天。现在,如果我可以的话,我愿意为你的答案投票 100 次 :) : )。
    【解决方案2】:

    你需要使用类似下面的东西:

    json = JSON.parse(value).to_s
    

    额外添加了to_s以将其转换为字符串。

    【讨论】:

    • 在哪一步我需要使用这个。仅供参考,在第一步中,值是 json 数组形式的字符串(真的不是 json 数组)。我需要的最终答案是 Json 而不是字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    相关资源
    最近更新 更多