2014-03-31 3 views
1

파일이 text.json이고 JSON HTTP 응답이 있습니다. 그들이 동등한 지 확인하는 것이 좋은가요?Json 응답을 Json 텍스트 파일과 비교

여기에 내가 가지고있는 것이 있지만 더 나은 해결책이 있다고 생각합니다. 당신이 배열 JSONs의을 테스트하려면

JSON.parse(response["data"]).eql?(JSON.parse(File.read(text.json))) 

편집
, 당신은 확실하지 :

JSON.parse(response["data"]).eql?(File.read(text.json)) 

답변

3

당신은 테스트의 양쪽 끝을 구문 분석 할 필요가 순서는 파일에서 동일한 의미가됩니다. [{a:1, b:2}, {a:2, b:1}][{a:2, b:1}, {a:1, b:2}]과 같아야합니다. (자세한 기술에 대한 here 참조) 처음으로 정렬해야합니다

JSON.parse(response["data"]).sort.eql?(JSON.parse(File.read(text.json)).sort) 

편집 2
Hash 이후 ES 정렬 아니라, 위에서 작동하지 않습니다하지 않습니다. 다른 기술 중 하나를 사용할 수 있습니다.

from_response = JSON.parse(response["data"]) 
from_file = JSON.parse(File.read(text.json)) 

(from_response & from_file) == from_response 
(from_response - from_file).empty? 
+0

JSON 응답 배열은 어떻게됩니까? '[{}, {}]. eqls? [{}, {}]'? –

+0

귀하의 질문을 이해할 수 있을지 모르겠습니다. 응답은 JSON의 배열이며 파일에는 JSON 배열이 있습니까? JSON의 순서가 중요하다면 그렇습니다. 그렇지 않다면 솔루션을 조정할 필요가 있습니다 ... –

+0

예 모두 배열이고 순서는 중요하지 않습니다. –