2014-09-04 2 views
4

Я пытаюсь сравнить две строки JSON для равенства. Я нашел это solution, который использует Джексон, как показано ниже, но во всем моем проекте я использую GSON, поэтому мне нужно сделать то же самое, используя GSON.Как сравнить две строки JSON для равенства с помощью GSON?

ObjectMapper mapper = new ObjectMapper(); 
JsonNode tree1 = mapper.readTree(jsonString1); 
JsonNode tree2 = mapper.readTree(jsonString2); 
if (tree1.equals(tree2)) { 
    // yes, contents are equal -- note, ordering of arrays matters, objects not 
} else { 
    // not equal 
} 

Есть ли способ сравнить две строки JSON для равенства с использованием GSON?

+0

В теории вы просто deserialize в Maps/Lists и сравнить два корня. –

ответ

5

По this answer вы могли бы использовать это:

JsonParser parser = new JsonParser(); 
JsonElement o1 = parser.parse("{a : {a : 2}, b : 2}"); 
JsonElement o2 = parser.parse("{b : 2, a : {a : 2}}"); 
assertEquals(o1, o2); 

К сожалению, я предполагаю, что это не совсем так чист, как вы надеялись, но он должен работать.

В любом случае может быть полезно просмотреть другие ответы в этой теме (хотя не все используют GSON), поэтому, если это не сработает, возможно, один из них.

+4

Привет - попробовал это с последним GSON 2.4, и это не сработало. Подтверждено, что возвращает false: new JsonParser(). Parse ("{a: {a: 2}, b: 2}"). Equals (новый JsonParser(). Parse ("{b: 2, a: {a: 2 }} ")) –

Смежные вопросы