No hay demasiados; JSON es una especificación simple. No creo que ninguno de estos sean específicos de Java. Agregaré más como pienso en ellos.
- Este es el principal. Los objetos JSON están desordenados. No puede contar con el orden natural del texto JSON entrante que se conserva en el objeto JSON analizado. Tampoco puede asumir ningún orden al convertir un objeto analizado de nuevo en texto.
- No puedes poner comentarios en JSON.
- JSON no tiene soporte de formato de fecha.
- La especificación no le dice qué tipo de número obtendrá. Por ejemplo, ¿es 1.0e1 un número entero, flotante o doble? Depende de la implementación.
- Se supone que todas las cadenas se citan, aunque algunas implementaciones le permitirán evitar el no citar los nombres en un par nombre-valor.
- Un número entre comillas es una cadena, no un número. Lo mismo para un booleano.
- Los objetos y matrices JSON se pueden anidar a cualquier profundidad arbitraria. Recuerda que cuando escribes tu analizador recursivo.
- XML es más rico que JSON, por lo que no se asignan limpiamente entre sí.
- El primer carácter del texto JSON debe ser ‘[‘ o ‘{‘. Cualquier otra cosa es inválida. Los valores de cadena solo pueden existir como nombres o valores de objetos JSON y como valores de matriz JSON.