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
'source' 카테고리의 다른 글
오류: 정의되지 않은 속성 'map'을 읽을 수 없습니다. (0) | 2023.02.23 |
---|---|
Angular의 요소JS 지시어 (0) | 2023.02.23 |
RSpec/RoR을 사용하여 AJAX 요구를 테스트하려면 어떻게 해야 합니까? (0) | 2023.02.14 |
Wordpress를 mysql 서버에 연결할 수 없습니다. (0) | 2023.02.14 |
워드프레스 플러그인에서 컬을 사용하는 방법은 무엇입니까? (0) | 2023.02.14 |