source

JSON을 Ruby 해시로 변환하는 방법

nicesource 2023. 2. 18. 20:35
반응형

JSON을 Ruby 해시로 변환하는 방법

다음 값을 가진 JSON 개체가 있습니다.

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

키/값 쌍을 얻기 위해 루비로 루프하고 싶습니다.사용할 때@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"}

또한 Rails의 메서드를 사용하여 기호 또는 문자열로 본문에 액세스할 수 있습니다.

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

그리고나서

json[:val] #=> "test"

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

아무도 JSON의 메서드를 지적하지 않은 것이 놀랍습니다.JSON에서 또는 JSON으로 매우 쉽고 투명하게 디코딩할 수 있습니다.

개체가 문자열과 같은 경우 문자열을 구문 분석하고 구문 분석 결과를 Ruby 데이터 구조로 반환합니다.그렇지 않으면 Ruby 데이터 구조 개체에서 JSON 텍스트를 생성하여 반환합니다.

다음 사항을 고려하십시오.

require 'json'

hash = {"val":"test","val1":"test1","val2":"test2"} # => {:val=>"test", :val1=>"test1", :val2=>"test2"}
str = JSON[hash] # => "{\"val\":\"test\",\"val1\":\"test1\",\"val2\":\"test2\"}"

str이제 부호화된 JSON을 포함하게 되었습니다.hash.

다음과 같은 방법으로 쉽게 되돌릴 수 있습니다.

JSON[str] # => {"val"=>"test", "val1"=>"test1", "val2"=>"test2"}

커스텀 오브젝트에는 필요to_s클래스에 대해 정의되고 그 안에서 개체를 해시로 변환한 다음to_json그 위에 올려놔요.

어딘가에 JSON 해시가 있다고 가정하고 WarHog 버전과 같은 것으로 자동 변환하려면 JSON 해시의 내용을 랩합니다.%q{hsh}태그를 지정합니다.

이것은 WarHog의 답변과 같이 필요한 이스케이프 텍스트를 자동으로 추가하는 것 같습니다.

nice_module 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/how-to-convert-json-to-a-ruby-hash

반응형