¿Cómo obtengo diferencias entre dos objetos json usando GSON?

He utilizado este código para comparar dos objetos JSON con Gson en Android:

String json1 = "{"name": "ABC", "city": "XYZ"}"; String json2 = "{"city": "XYZ", "name": "ABC"}"; JsonParser parser = new JsonParser(); JsonElement t1 = parser.parse(json1); JsonElement t2 = parser.parse(json2); boolean match = t2.equals(t1); 

¿Hay alguna manera dos obtener las diferencias entre dos objetos utilizando Gson en un formato JSON?

Si deserializa los objetos como un Map<String, Object> , también puede usar Maps.difference con Maps.difference para comparar los dos mapas resultantes.

Tenga en cuenta que si se preocupa por el orden de los elementos, Json no mantiene el orden en los campos de Object s, por lo que este método no mostrará esas comparaciones.

Así es como lo haces:

 public static void main(String[] args) { String json1 = "{\"name\":\"ABC\", \"city\":\"XYZ\", \"state\":\"CA\"}"; String json2 = "{\"city\":\"XYZ\", \"street\":\"123 anyplace\", \"name\":\"ABC\"}"; Gson g = new Gson(); Type mapType = new TypeToken<Map<String, Object>>(){}.getType(); Map<String, Object> firstMap = g.fromJson(json1, mapType); Map<String, Object> secondMap = g.fromJson(json2, mapType); System.out.println(Maps.difference(firstMap, secondMap)); } 

Este programa produce:

 not equal: only on left={state=CA}: only on right={street=123 anyplace} 

Lea más aquí acerca de qué información contiene el objeto MapDifference resultante.

  • Org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Campo no reconocido "id" (Criterios de clase), no marcado como ignorable
  • IOException e es nulo
  • Imagen local a través de json local en android
  • JacksonParser databind y la causa principal "Encontró archivo duplicado para APK"?
  • Cómo hacer un servicio web (preferiblemente usando PHP) que puede ser solicitado para obtener objetos JSON por la aplicación android
  • Json Parsing de Url en Android, no funciona
  • Cómo cargar la imagen en base64 en el servidor
  • Publicar un servicio JSONArray en WCF desde android
  • Cómo almacenar datos de JSON analizados en SQLite
  • Acceder a la respuesta JSON desde la vista web de android
  • Iterate Json datos del servicio web en el orden correcto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.