1

私は以下のように重複したキーを持つjsonを持っています:

{"a":{
"stateId":"b",
"countyId":["c"]
},"a":{
"stateId":"d",
"countyId":["e"]
}}

JSON.parseorを使用するJSON(stirng)と、解析され、値を持つキーが返されますd, e。同じキーを2回解析することを避け、代わりにb, cキーの値を持つようにjsonを解析する必要があります。'a''d', 'e'

4

2 に答える 2

0

それはすべて、文字列の形式によって異なります。あなたが投稿したのと同じくらい簡単な場合:

require 'json'

my_json =<<END_OF_JSON
{"a":{
"stateId":"b",
"countyId":["c"]
},"a":{
"stateId":"d",
"countyId":["e"]
},"b":{
"stateId":"x",
"countyId":["y"]
},"b":{
"stateId":"no",
"countyId":["no"]
}}
END_OF_JSON


results = {}

hash_strings = my_json.split("},")

hash_strings.each do |hash_str|
  hash_str.strip!

  hash_str = "{" + hash_str if not hash_str.start_with? "{"
  hash_str += "}}" if not hash_str.end_with? "}}"

  hash = JSON.parse(hash_str)

  hash.each do |key, val|
    results[key] = val if not results.keys.include? key
  end

end

p results

--output:--
{"a"=>{"stateId"=>"b", "countyId"=>["c"]}, "b"=>{"stateId"=>"x", "countyId"=>["y"]}}
于 2013-09-15T07:23:23.650 に答える