Programming

JSON을 루비 해시로 변환

procodes 2020. 7. 4. 11:57
반응형

JSON을 루비 해시로 변환


다음 값을 보유하는 JSON 객체가 있습니다.

@value = {"val":"test","val1":"test1","val2":"test2"}

키 값 쌍을 얻기 위해 Ruby에서 루핑하고 싶습니다. 을 사용할 때 @each루비 해시 형식이 아니기 때문에 객체를 반복하지 않습니다.

@value = {"val"=>"test","val1"=>"test1","val2"=>"test2"}

위의 JSON 객체를 Ruby 해시로 변환하려면 어떻게해야합니까?


다음 스 니펫은 어떻습니까?

require 'json'
value = '{"val":"test","val1":"test1","val2":"test2"}'
puts JSON.parse(value) # => {"val"=>"test","val1"=>"test1","val2"=>"test2"}

with_indifferent_access와 같이 rails의 메소드를 사용할 수 있으므로 기호 또는 문자열로 본문에 액세스 할 수 있습니다.

value = '{"val":"test","val1":"test1","val2":"test2"}'
json = JSON.parse(value).with_indifferent_access

그때

json[:val] #=> "test"

json["val"] #=> "test"

어딘가에 JSON 해시가 걸려 있다고 가정하면이를 자동으로 WarHog 버전과 같은 것으로 변환하려면 json 해시 내용을 % q {hsh} 태그로 감싸십시오. 이것은 WarHog의 답변과 같이 필요한 이스케이프 된 텍스트를 모두 자동으로 추가하는 것 같습니다


당신이 시도 유무 : http://flori.github.com/json/를 .

실패하면 그냥 파싱 할 수 있습니까? 관심있는 배열이라면 위의 내용을 분리하는 것이 매우 간단합니다.


nice_hash gem을 사용할 수 있습니다 : https://github.com/MarioRuiz/nice_hash

require 'nice_hash'
my_string = '{"val":"test","val1":"test1","val2":"test2"}'

# on my_hash will have the json as a hash, even when nested with arrays
my_hash = my_string.json

# you can filter and get what you want even when nested with arrays
vals = my_string.json(:val1, :val2)

# even you can access the keys like this:
puts my_hash._val1
puts my_hash.val1
puts my_hash[:val1]

참고 URL : https://stackoverflow.com/questions/7964282/convert-json-to-ruby-hash

반응형