Jackson - Marshall String to JsonNode

1. Gambaran keseluruhan

Tutorial ringkas ini akan menunjukkan cara menggunakan Jackson 2 untuk menukar JSON String ke JsonNode ( com.fasterxml.jackson.databind.JsonNode ).

Sekiranya anda ingin menggali lebih mendalam dan mengetahui perkara menarik lain yang boleh anda lakukan dengan Jackson 2 - teruskan ke tutorial utama Jackson.

2. Penghuraian Pantas

Sangat mudah, untuk menguraikan JSON String, kita hanya memerlukan 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. Penguraian Tahap Rendah

Sekiranya, atas sebab tertentu, anda perlu melangkah lebih rendah daripada itu, contoh berikut memperlihatkan JsonParser yang bertanggungjawab dengan penghuraian String yang sebenarnya:

@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. Menggunakan JsonNode

Selepas JSON diuraikan ke Objek JsonNode, kita dapat bekerjasama dengan Model Pohon Jackson JSON :

@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. Kesimpulan

Artikel ini menggambarkan cara menguraikan JSON Strings ke dalam model Jackson JsonNode untuk membolehkan pemprosesan tersusun Objek JSON.

Pelaksanaan semua contoh dan coretan kod ini terdapat di projek github saya - ini adalah projek berasaskan Eclipse, jadi mudah untuk diimport dan dijalankan sebagaimana adanya.