2017-04-19 1 views
-2

JSON 출력을 생성하고 키 값 쌍을 만들기 전에 값을 확인하고 싶습니다. JSON을 나중에 추가하는 대신 생성하는 방법이 있습니까? 는 JSON 문자열을 만드는 동안 나는 unless some_value.blank?를 확인할 수없는이 예에서JSON 출력을 생성하는 동안 값을 확인하는 방법

sample_json = { 
    abc: "abc", 
    xyz: "xyz", 
    pqr: some_value unless some_value.blank? 
} 

, 그래서 내가 먼저 JSON을 만든 다음 별도로 빈 값을 확인 후 pqr: some_value을 추가

나는이 JSON 출력을 만드는 오전

sample_json = { 
    abc: "abc", 
    xyz: "xyz" 
} 

sample_json[:pqr] = some_value unless some_value.blank? 

첫 번째 예와 같이 JSON 자체를 만드는 동안 수표를 추가하는 방법이 있습니까?

+0

우리에게이 일에 당신의 시도를 표시합니다. 당신의 노력의 증거가 없으면 당신이 빨리 포기하고 우리가 당신을 위해 그것을 쓰길 원합니다. "[mcve]"및 "[스택 오버플로 사용자에 대한 연구 노력의 정도는 얼마나됩니까?] (http://meta.stackoverflow.com/questions/261592)" –

+0

아니요, JSON 직렬화 내부로 들어가는 방법은 없습니다 방법. 초기 JSON을 생성하고 원하는대로 계산 한 다음 해당 값을 원래 객체에 추가하고 다시 값을 다시 설정합니다. 그러나 귀하의 질문은 "[XY 문제] (https://meta.stackexchange.com/q/66377/153968)"입니다. X에 관해 질문했을 때 Y에 관해 묻는 곳이 어디입니까? 전반적인 것은 무엇입니까? 골? JSON을 사용하여 수행하려는 작업은 쉽지만 설명이 좋지 않습니다. "[mcve]"와 링크 된 페이지를 참조하십시오. BTW, 귀하의 예제 JSON 유효한 JSON 출력을 만들지 않습니다. –

+0

모든 값의 유효성을 검사해야합니까, 아니면 그 중 하나 또는 일부만 검사해야합니까? 다른 모든 값을 어떻게 할당합니까? 실제 코드를 더 많이 보여줌으로써 문제를 더 잘 이해할 수 있습니다. – Gerry

답변

-1

나는 이런 식으로 그것에 대해 갈 것 :

# >> {"abc":"abc","xyz":"xyz"} 

은 다음 JSON을 만들고 그것을 변경하려고하지 마십시오가 발생할 수 있습니다

require 'active_support/core_ext/object/blank' 
require 'json' 

some_value = 'foo' 
hash = { 
    abc: "abc", 
    xyz: "xyz" 
} 

hash.merge!(pqr: some_value) unless some_value.blank? 
puts hash.to_json 

# >> {"abc":"abc","xyz":"xyz","pqr":"foo"} 

some_value = ''합니다. 대신 기본 객체를 만들고 테스트를 만든 다음 변경 사항을 병합 한 다음 JSON으로 직렬화하십시오.

0

나는 그렇게 생각하지 않습니다.

그러나 active_support가 있다고 가정 할 때 다른 방법으로는 compact (sample_json.compact)의 해시를 사용할 수 있습니다. nil 값의 키 - 값 쌍이 제거됩니다.

하지만 !v.blank?을해야하는 경우, 당신은 할 수 : sample_json.select { |_, value| !value.blank? }

관련 문제