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: