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