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: