Java objekty do a z JSON pomocí Jackson

JSON (JavaScript Object Notation) je jednoduchý formát pro výměnu dat. Je zabalen do složených závorek a obsahuje dvojice klíč : hodnota. Na rozdíl od xml není tak upovídaný.

Jackson je populární javovská knihovna pro převod Java objektů do JSON a naopak.

Nejjednodušším způsobem jak převést Java objekt na JSON formát a naopak je použít com.fasterxml.jackson.databind.ObjectMapper. Pro to, abychom mohli ObjectMapper použít je třeba do pom.xml (v Maven projektu) přidat závislost na následující knihovně. Nejaktuálnější verze v době psaní tohoto příspěvku je 2.8.5:

<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>2.8.5</version>
</dependency>

Vytvoříme si objekt, který budeme ukládat a načítat do JSON formátu.

MyObject.java

public class MyObject {

	private long myNumber;
	private boolean myBoolean;
	private String myString;
	
	public MyObject(long myNumber, boolean myBoolean, String myString) {
		this.myNumber = myNumber;
		this.myBoolean = myBoolean;
		this.myString = myString;
	}
	
	// Pro načítání z JSON je třeba mít bezparametrický konstruktor.
	public MyObject() {}

	public long getMyNumber() {
		return myNumber;
	}

	public void setMyNumber(long myNumber) {
		this.myNumber = myNumber;
	}

	public boolean isMyBoolean() {
		return myBoolean;
	}

	public void setMyBoolean(boolean myBoolean) {
		this.myBoolean = myBoolean;
	}

	public String getMyString() {
		return myString;
	}

	public void setMyString(String myString) {
		this.myString = myString;
	}
}

V hlavní třídě vytvoříme instanci object mapperu, instanci našeho objektu a pro ukládání voláme metodu writeValue(), pro načtení readValue().

App.java

import java.io.File;
import java.io.IOException;

import com.fasterxml.jackson.databind.ObjectMapper;

public class App  {
    public static void main(String[] args) {
		
    	ObjectMapper objectMapper = new ObjectMapper();
    	MyObject writeMO = new MyObject(123456L, true, "hello");
    	
    	// uožení do souboru
    	try {
		objectMapper.writeValue(new File("file.json"), writeMO);
		System.out.println("MyObject uložen.");
	} catch (IOException e) {
		e.printStackTrace();
		}
    	
    	// načtení ze souboru
    	try {
		MyObject readMO = objectMapper.readValue(new File("file.json"), MyObject.class);
		System.out.println("MyObject načten.");
		// rozbrazení načtených hodnot
		System.out.println("myNumber:\t" + readMO.getMyNumber());
		System.out.println("myBoolean:\t" + readMO.isMyBoolean());
		System.out.println("myString:\t" + readMO.getMyString());
	} catch (IOException e) {
		e.printStackTrace();
		}
	}
}

Vysledek spuštění:

MyObject uložen.
MyObject načten.
myNumber:	123456
myBoolean:	true
myString:	hello

Je vytvořen tento soubor file.json:

{
	"myNumber": 123456,
	"myBoolean": true,
	"myString": "hello"
}

Zdroje:

Napsat komentář