Formátování JSON souboru v programu Notepad++

Pokud pracujete se soubory s JSON, je možné je v programu Notepad++ nechat naformátovat do lidsky čitelnější podoby. K tomu je potřeba si do Notepad++ nainstalovat plugin JSTool: Pluginy -> Plugin Manager -> Show Plugin Manager -> z dostupných pluginů vybrat JSTool. Následně je možné soubor s json naformátovat pomocí Pluginy -> JSTool -> JSFormat, nebo použít klávesovou zkratku Ctrl + Alt + M.

Před

notepad_formating_json_01

Po

notepad_formating_json_02

Ukládání Java 8 LocalDateTime do JSON pomocí Jackson

V případě, že se pokusíte uložit Java 8 LocalDateTime do formátu JSON pomocí knihovny Jackson, dostanete následující výsledek:

"from": {
	"hour": 14,
	"minute": 30,
	"nano": 0,
	"second": 0,
	"monthValue": 8,
	"year": 2016,
	"dayOfMonth": 21,
	"dayOfWeek": "SUNDAY",
	"dayOfYear": 234,
	"month": "AUGUST",
	"chronology": {
		"id": "ISO",
		"calendarType": "iso8601"
	}
}

Ve většině případů to asi nebude přesně to, co byste chtěli. Jackson nabízí jednoduché řešení a to registraci JavaTimeModule. Tento modul umožní správné uložení a načtení Java 8 DateTime typů.

Číst dálUkládání Java 8 LocalDateTime do JSON pomocí Jackson

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().

Číst dálJava objekty do a z JSON pomocí Jackson