[Java] [jackson] Correspond à la virgule de fin (virgule de fin) lors de l'analyse de JSON.

Lors de l'analyse de JSON en Java, je me demande si une bibliothèque appelée jackson est souvent utilisée. (Mis à part la plainte selon laquelle Java n'a pas de bibliothèque standard qui gère JSON!? Seul EE8 est pris en charge?)

J'écrirai sur la façon d'utiliser ce jackson pour analyser JSON dans le soi-disant "Ketsukamma" et "Ending comma".

Cela ne semble pas être une version officielle.

Tout d'abord, la sortie officielle de jackson pour le moment (22 juin 2017) est la série 2.8, et il semble que la série 2.8 ne puisse pas supporter la virgule de fin. Il semble que l'option ALLOW_MISSING_VALUES puisse être utilisée dans la mesure où cela est regrettable, mais on ne peut pas dire qu'elle correspond à la soi-disant virgule de fin.

Virgule de fin (Ketsukamma, virgule de fin)

ES5 et Java récent (que j'avais oublié depuis un certain temps) ignorent désormais les virgules de fin.

js


let obj = {
        key1: 1,
        key2: 2,
    };
let arr = [
        1,
        2,
    ];

Java


String[] ss = new String[] {
        "a",
        "b",
    };
//・ ・ ・
enum KIND {
    A,
    B,
}

Vous pouvez écrire quelque chose comme ça.

(Je n'ai pas enquêté sur ce qui se passe avec le JSON officiel)

S'il y a une virgule de fin dans l'analyse JSON avec jackson normal, une erreur de syntaxe se produira, mais En fait, j'ai essayé de savoir si cela pouvait être géré avec Option.

soutien jackson

En regardant le problème ci-dessous, cela semble correspondre.

Add JsonParser.ALLOW_TRAILING_COMMA to work for Arrays and Objects

Cependant, il semble que le support officiel n'ait pas encore été fait, et il semble que cela puisse être réalisé en utilisant le système 2.9.0.pr.

S'il s'agit de maven, écrivez comme suit.

pom.xml


<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.0.pr4</version>
</dependency>

Après avoir utilisé la série 2.9.0, il semble qu'il puisse être pris en charge en définissant ALLOW_TRAILING_COMMA d'ObjectMapper comme suit.

ObjectMapper mapper = new ObjectMapper().configure(JsonParser.Feature.ALLOW_TRAILING_COMMA, true);
Object obj = mapper.readValue(json, Object.class);

Cela ne sort pas beaucoup même si je le recherche sur Google avec Ketsukanma.

Personnellement, je l'ai appelé "Ketsukamma", mais il ne sort pas beaucoup même si je le google. Est-ce une "virgule de queue" en japonais? Cependant, même si je googlé avec "jackson tail virgule", cette contre-mesure n'est pas sortie facilement. Finalement, quand j'ai googlé "jackson trailing comma", il est sorti.

Lorsque vous recherchez "Ketsukamma", allez à "fin de virgule"! C'est ma leçon personnelle cette fois.

Recommended Posts

[Java] [jackson] Correspond à la virgule de fin (virgule de fin) lors de l'analyse de JSON.
Convertir l'énumération Java et JSON vers et depuis Jackson
[Java] Convertir JSON en Java et Java en JSON-Comment utiliser GSON et Jackson-
9 Correspond à la valeur de retour
[Java] Communication JSON avec jackson
JSON en Java et Jackson Partie 1 Renvoyer JSON à partir du serveur
Échec de la création de la machine virtuelle Java lors de l'installation d'Eclipse.
12 Correspond à l'instruction while
Entrée dans la console Java
J'ai essayé de traduire le message d'erreur lors de l'exécution d'Eclipse (Java)
Comment résoudre l'erreur inconnue apparue lors de l'utilisation de slf4j en Java
[java8] Pour comprendre l'API Stream
Bienvenue dans le marais des bibliothèques Java! !!
Analyser l'analyse syntaxique de l'API COTOHA en Java
La route de JavaScript à Java
[Java] Affiche le résultat de ffprobe -show_streams dans JSON et mappe-le à un objet dans Jackson
Mettez à jour JAVA vers la dernière version vers 1.8.0_144 (lors du téléchargement à partir du Web et de la mise à jour)
Exemple de code pour la sérialisation et la désérialisation des énumérations Java Enum et JSON dans Jackson
[Petite histoire Java] Surveiller lorsqu'une valeur est ajoutée à la liste
Comment trouver le nombre total de pages lors de la pagination en Java
Je souhaite obtenir l'adresse IP lors de la connexion au Wi-Fi avec Java
[Java] Comment utiliser la classe File
Introduction à Java pour la première fois # 2
Java SE8 Silver ~ La route à franchir ~
À propos de la procédure pour que Java fonctionne
[Java] Comment utiliser la méthode toString ()
Etudier comment utiliser le constructeur (java)
[Traitement × Java] Comment utiliser la boucle
[Java] Comment régler la date sur 00:00:00
[Java] Comment obtenir le répertoire actuel
[Traitement × Java] Comment utiliser la classe
Comment obtenir la date avec Java
Sortie du livre "Introduction à Java"
[Traitement × Java] Comment utiliser la fonction
Précautions lors de la migration de VB6.0 vers JAVA
Je suis allé au Java Women's Club # 1
[Java] Colorez la sortie standard vers le terminal
[Java] Comment utiliser la classe Calendar
Comment assembler JSON directement dans Jackson
[Promotion de la compréhension de Ruby (1)] Lorsque vous passez de Java à Ruby, commencez par comprendre la différence.
Faire correspondre le JSON du cas du serpent au champ du cas du chameau en Java (JVM)