首先,您需要將您的JSON字符串轉換爲Ruby對象。
require "json"
json = %{
[
{
"category": "category1",
"text": "some text"
},
{
"category": "category2",
"text": "some more text"
},
{
"category": "category1",
"text": "even more text"
}
]
}
ary = JSON.parse(json)
現在,我們已經在Ruby的形式哈希值的數組,我們可以操縱它
h = ary.group_by {|i| i["category"]}
#=> {"category1"=>[{"category"=>"category1", "text"=>"some text"}, {"category"=>"category1", "text"=>"even more text"}], "category2"=>[{"category"=>"category2", "text"=>"some more text"}]}
h = h.map {|k,v| {k => v.map {|t| {"text" => t["text"]}}}}
#=> [{"category1"=>[{"text"=>"some text"}, {"text"=>"even more text"}]}, {"category2"=>[{"text"=>"some more text"}]}]
h = h.reduce(&:merge)
#=> {"category1"=>[{"text"=>"some text"}, {"text"=>"even more text"}], "category2"=>[{"text"=>"some more text"}]}
打印JSON在美麗的形式,檢查結果
puts JSON.pretty_generate(h)
輸出:
{
"category1": [
{
"text": "some text"
},
{
"text": "even more text"
}
],
"category2": [
{
"text": "some more text"
}
]
}
您是不是要找' 「類別2」:{ 「文」: 「一些文字」}'?在第二個樣本? – quetzalcoatl
邏輯不清楚。 – sawa
@quetzalcoatl或者''category2「:[{」text「:」更多文本「}]'在邏輯上會更加一致。 – sawa