ジャクソン–マーシャル文字列からJsonNode
1. 概要
このクイックチュートリアルでは、 Jackson2を使用してJSON文字列をJsonNode( com.fasterxml.jackson.databind.JsonNode )に変換する方法を示します。
より深く掘り下げてジャクソン2でできる他のクールなことを学びたい場合は、メインのジャクソンチュートリアルに進んでください。
2. クイック解析
非常に簡単に言えば、JSON文字列を解析するには、ObjectMapperのみが必要です。
@Test
public void whenParsingJsonStringIntoJsonNode_thenCorrect()
throws JsonParseException, IOException {
String jsonString = "{"k1":"v1","k2":"v2"}";
ObjectMapper mapper = new ObjectMapper();
JsonNode actualObj = mapper.readTree(jsonString);
assertNotNull(actualObj);
}
3. 低レベルの解析
何らかの理由で、をそれよりも低いレベルにする必要がある場合、次の例では、文字列の実際の解析を担当するJsonParserを公開します。
@Test
public void givenUsingLowLevelApi_whenParsingJsonStringIntoJsonNode_thenCorrect()
throws JsonParseException, IOException {
String jsonString = "{"k1":"v1","k2":"v2"}";
ObjectMapper mapper = new ObjectMapper();
JsonFactory factory = mapper.getFactory();
JsonParser parser = factory.createParser(jsonString);
JsonNode actualObj = mapper.readTree(parser);
assertNotNull(actualObj);
}
4. JsonNodeを使用する
JSONがJsonNodeオブジェクトに解析された後、JacksonJSONツリーモデルを操作できます。
@Test
public void givenTheJsonNode_whenRetrievingDataFromId_thenCorrect()
throws JsonParseException, IOException {
String jsonString = "{"k1":"v1","k2":"v2"}";
ObjectMapper mapper = new ObjectMapper();
JsonNode actualObj = mapper.readTree(jsonString);
// When
JsonNode jsonNode1 = actualObj.get("k1");
assertThat(jsonNode1.textValue(), equalTo("v1"));
}
5. 結論
この記事では、JSON文字列をJacksonJsonNodeモデルに解析して、JSONオブジェクトの構造化された処理を有効にする方法を説明しました。
これらすべての例とコードスニペットの実装は、私のgithubプロジェクトにあります。これはEclipseベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。