Jackson - Ağaç Modeli

Ağaç Modeli, JSON belgesinin bellek içi ağaç temsilini hazırlar. ObjectMapper, JsonNode düğümlerinin ağacını oluşturur. En esnek yaklaşımdır. XML için DOM ayrıştırıcısına benzer.

JSON'dan Ağaç Oluştur

ObjectMapper, JSON'u okuduktan sonra ağacın kök düğümüne bir işaretçi sağlar. Kök Düğüm, ağacın tamamını geçmek için kullanılabilir. Sağlanan bir JSON Dizesinin kök düğümünü almak için aşağıdaki kod parçacığını göz önünde bulundurun.

//Create an ObjectMapper instance
ObjectMapper mapper = new ObjectMapper();	
String jsonString = "{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
//create tree from JSON
JsonNode rootNode = mapper.readTree(jsonString);

Geçiş Ağacı Modeli

Ağacı dolaşırken kök düğüme giden göreceli yolu kullanarak her düğümü alın ve verileri işleyin. Kök düğüm tarafından sağlanan ağaçta gezinen aşağıdaki kod parçacığını düşünün.

JsonNode nameNode = rootNode.path("name");
System.out.println("Name: "+ nameNode.textValue());
 
JsonNode marksNode = rootNode.path("marks");
Iterator<JsonNode> iterator = marksNode.elements();

Misal

JacksonTester adlı bir java sınıf dosyası oluşturun. C:\>Jackson_WORKSPACE.

Dosya: JacksonTester.java

import java.io.IOException;
import java.util.Iterator;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonTester {
   public static void main(String args[]){

      try {
         ObjectMapper mapper = new ObjectMapper();
         String jsonString = "{\"name\":\"Mahesh Kumar\",  \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
         JsonNode rootNode = mapper.readTree(jsonString);

         JsonNode nameNode = rootNode.path("name");
         System.out.println("Name: "+ nameNode.textValue());

         JsonNode ageNode = rootNode.path("age");
         System.out.println("Age: " + ageNode.intValue());

         JsonNode verifiedNode = rootNode.path("verified");
         System.out.println("Verified: " + (verifiedNode.booleanValue() ? "Yes":"No"));

         JsonNode marksNode = rootNode.path("marks");
         Iterator<JsonNode> iterator = marksNode.elements();
         System.out.print("Marks: [ ");

         while (iterator.hasNext()) {
            JsonNode marks = iterator.next();
            System.out.print(marks.intValue() + " "); 
         }

         System.out.println("]");
      }
      catch (JsonParseException e) { e.printStackTrace(); }
      catch (JsonMappingException e) { e.printStackTrace(); }
      catch (IOException e) { e.printStackTrace(); }
   }
}

Verify the result

Kullanarak sınıfları derleyin javac aşağıdaki gibi derleyici:

C:\Jackson_WORKSPACE>javac JacksonTester.java

Şimdi sonucu görmek için jacksonTester'ı çalıştırın:

C:\Jackson_WORKSPACE>java JacksonTester

Çıkışı Doğrulayın

Name: Mahesh Kumar
Age: 21
Verified: No
Marks: [ 100 90 85 ]

JSON'a Ağaç

Ağaçtan Java Nesnelerine