Beim Parsen von JSON in Java frage ich mich, ob häufig eine Bibliothek namens jackson verwendet wird. (Abgesehen von der Beschwerde, dass Java keine Standardbibliothek für JSON hat !? Wird nur EE8 unterstützt?)
Ich werde darüber schreiben, wie man diesen Jackson verwendet, um JSON im sogenannten "ketsu kamma" und "end comma" zu analysieren.
Erstens ist die offizielle Veröffentlichung von Jackson im Moment (22. Juni 2017) die 2.8-Serie, und es scheint, dass die 2.8-Serie das nachfolgende Komma nicht unterstützen kann. Es scheint, dass die Option ALLOW_MISSING_VALUES in dem Maße verwendet werden kann, wie es bedauerlich ist, aber es kann nicht gesagt werden, dass sie dem sogenannten nachgestellten Komma entspricht.
ES5 und aktuelles Java (das ich eines Tages vergessen habe) ignorieren jetzt nachgestellte Kommas.
js
let obj = {
key1: 1,
key2: 2,
};
let arr = [
1,
2,
];
Java
String[] ss = new String[] {
"a",
"b",
};
//・ ・ ・
enum KIND {
A,
B,
}
Sie können so etwas schreiben.
(Ich habe nicht untersucht, was mit dem offiziellen JSON los ist)
Wenn beim JSON-Parsing mit normalem Jackson ein nachfolgendes Komma steht, tritt jedoch ein Syntaxfehler auf Eigentlich habe ich versucht herauszufinden, ob es mit Option gehandhabt werden kann.
Betrachtet man das unten stehende Problem, so scheint es zu entsprechen.
Add JsonParser.ALLOW_TRAILING_COMMA
to work for Arrays and Objects
Es scheint jedoch, dass die offizielle Unterstützung noch nicht erfolgt ist und dass sie mithilfe des Systems 2.9.0.pr realisiert werden kann.
Wenn es sich um einen Maven handelt, schreiben Sie wie folgt.
pom.xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0.pr4</version>
</dependency>
Nach der Verwendung der 2.9.0-Serie scheint dies unterstützt zu werden, indem ALLOW_TRAILING_COMMA von ObjectMapper wie folgt festgelegt wird.
ObjectMapper mapper = new ObjectMapper().configure(JsonParser.Feature.ALLOW_TRAILING_COMMA, true);
Object obj = mapper.readValue(json, Object.class);
Ich persönlich habe es "Ketsukamma" genannt, aber es kommt nicht viel heraus, selbst wenn ich es google. Ist es ein "Schwanzkomma" auf Japanisch? Selbst wenn ich mit "Jackson Tail Comma" gegoogelt habe, war diese Gegenmaßnahme nicht einfach. Als ich schließlich "Jackson Trailing Comma" googelte, kam es heraus.
Wenn Sie nach "Ketsukamma" suchen, gehen Sie zu "Nachkomma"! Das ist diesmal meine persönliche Lektion.
Recommended Posts