2014-03-31 181 views
1

我有一個文件text.json,我有一個JSON HTTP響應。檢查它們是否相同有什麼好處?比較Json響應Json文本文件

這是我的,但我認爲有更好的解決方案。

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

回答

3

你需要分析你的測試的兩端:

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

編輯
如果你想測試一個陣列JSONs的,你是不知道,在文件中的順序將是相同的[{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

是的,都是數組,順序無關緊要。 –