Ruby에서 복잡한 JSON 구조를 직렬화하려고합니다. 나는 Rails를 사용하지 않지만 Ruby에서 충분히 새로워서 여기서 중요한지 확실하지 않다. 다른 쪽 끝 API는 직렬화하기 전에,이Ruby 직렬화 데이터 구조
{ "command" : {
"param" : { "field" : "val", "otherField":"otherVal" },
"param" : { "field" : "val", "otherField":"otherVal" },
"param" : { "field" : "val", "otherField":"otherVal" }
}
}
루비 객체의 어떤 종류가하는 명령 보류 같은 것을 기대하고있다? 또 다른 레벨의 대괄호가 있기 때문에 배열이 아닙니다 (아래 예 참조). 그리고 나는 루비가 처음이지만 해시에서도 같은 이름을 가진 객체를 둘 이상 가질 수 있다고 생각하지 않습니다.
스토리 :이 같은 해시와 배열 달리 루비 그렇게 잘 JSON으로 직렬화하기 때문에, 내가 기대 한 뭔가 :
Ary = Array.new
Ary.push (param.new)
Ary.push (param.new)
Ary.push (param.new)
wrappedCmd = { "command" => Ary }
Oj.dump(wrappedCmd)
그러나 이것은 생산이 :
{ "command" : [
"param" : { "field" : "val", "otherField":"otherVal" },
"param" : { "field" : "val", "otherField":"otherVal" },
"param" : { "field" : "val", "otherField":"otherVal" }
]
}
내가 확인했습니다 그 첫 번째 형식은 수동으로 구성된 직렬화가 진행되는 동안 예상되는 것이고 두 번째 형식은 유효하지 않은 형식 오류를 생성합니다.
* 모든 키가 문자 그대로 "param"이면 * 의미 상으로는 유효하지 않습니다. * JSON은 실제로는 "param"입니다. 키 (예 : JSON 객체 또는 Ruby 해시)에서 키를 복제 할 수 없습니다. 해당 유효하지 않은 JSON이 실제로 "정확함"인지 확인하십시오. (그리고 적절한 JSON 라이브러리는 깨진 마크 업을 표시 할 수 없습니다.) – user2864740
흠. 승인. API 끝을 제어하지 말고 첫 번째 형식을 허용합니다. 감사. – LizH