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".
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.
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.
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);
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