[JAVA] So serialisieren und deserialisieren Sie den LocalDateTime-Typ mit GSON

Ich habe GSON verwendet, um den LocalDateTime-Typ zu serialisieren und zu deserialisieren. Notieren Sie sich daher die Verwendung.

Zielklasse

In SampleDto befindet sich ein Mitglied vom Typ LocalDateTime.

SampleDto.java


public class SampleDto implements JsonSerializer<SampleDto>, JsonDeserializer<SampleDto> {
	private static final long serialVersionUID = 8349420239867344581L;

	private String key;
	private LocalDateTime localDateTime = LocalDateTime.now();

	public SampleDto(String key, LocalDateTime localDateTime) {
		this.key = key;
		this.localDateTime = localDateTime;
	}

	@Override
	public JsonElement serialize(SampleDto src, Type typeOfSrc, JsonSerializationContext context) {
		DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
		JsonObject result = new JsonObject();
		result.add("key", new JsonPrimitive(key));
		// LocalDateTime Serialize
		result.add("localDateTime", new JsonPrimitive(formatter.format(localDateTime)));
		return result;
	}

	@Override
	public SampleDto deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
			throws JsonParseException {
		DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
		final JsonObject jsonObject = json.getAsJsonObject();
		String key = jsonObject.get("key").getAsString();
		// LocalDateTime Deserialize
		LocalDateTime localDateTime = formatter.parse(jsonObject.get("localDateTime").getAsString(),
				LocalDateTime::from);

		return new SampleDto(key, localDateTime);
	}

	public LocalDateTime getLocalDateTime() {
		return localDateTime;
	}
}

Testklasse

Ich habe auch eine Testklasse wie folgt erstellt.

SampleDtoTest.java


ublic class SampleDtoTest {
	private static Gson gson;
	private static final GsonBuilder gsonBuilder = new GsonBuilder();
	private static SampleDto sampleDto;

	@BeforeClass
	public static void createGson() {
		gsonBuilder.registerTypeAdapter(SampleDto.class, new SampleDto("test", LocalDateTime.of(2018, 06, 11, 00, 00)));
		gson = gsonBuilder.create();
	}

	@BeforeClass
	public static void generateData() {
		sampleDto = new SampleDto("test", LocalDateTime.of(2018, 06, 11, 00, 00));
	}

	@Test
	public void testJSON() {
		String json = gson.toJson(sampleDto);
		SampleDto fromJson = gson.fromJson(json, SampleDto.class);
		assertTrue(fromJson.getLocalDateTime().equals(sampleDto.getLocalDateTime()));
	}
}

Recommended Posts

So serialisieren und deserialisieren Sie den LocalDateTime-Typ mit GSON
So erstellen Sie eine API mit GraphQL und Rails
Wie man einen Schrägstrich zurückschlägt \
So installieren Sie Gradle und Kotlin mit SDKMAN (Mac)
Wie man mit html.erb nummeriert (nummeriert)
So aktualisieren Sie mit activerecord-import
Umgang mit verschiedenen Versionen von rbenv und Ruby
Verwendung von StringBurrer und Arrays.toString.
Wie fange ich mit schlank an?
Verwendung von EventBus3 und ThreadMode
Wie man ein Zeichen mit "~" einschließt
Aufrufen von Klassen und Methoden
[Tipps] So lösen Sie Probleme mit XCode und Swift für Anfänger
Wie man Gleichheit und Gleichheit benutzt (wie man Gleichheit benutzt)
Wie man mssql-tools mit alpine benutzt
So verbinden Sie Heroku und Sequel
[Bequem zu merken !!!] So konvertieren Sie vom LocalDate-Typ in eine Zeichenfolge und von der Zeichenfolge in den LocalDate-Typ
[Java] So konvertieren Sie vom Typ String in den Pfadtyp und erhalten den Pfad
Mit Jackson gut formen und serialisieren
So starten Sie Camunda mit Docker
Verwendung des Java-Aufzählungstyps
Wie kann ich mit NUXTJS Official S3 und CloudFront für AWS bereitstellen? Mit Docker-Compose
Beispielcode zum Serialisieren und Deserialisieren von Java Enum-Enumerationen und JSON in Jackson
Wie man eine hybride Suche mit morphologischer Analyse und Ngram mit Solr realisiert
[Swift] So verbinden Sie TabBar mit Storyboard Reference und verwenden auch NavigationController
Verwendung der Dateien args :, environment :, env_file: und .env mit dem Befehl docker-compose
Server mit Spring Gradle ausführbar So erstellen Sie JAR und WAR
[Schienen] So erstellen Sie eine Tabelle, fügen eine Spalte hinzu und ändern den Spaltentyp
So erstellen Sie eine App mit einem Plug-In-Mechanismus [C # und Java]
Java8 / 9-Anfänger: Streamen Sie API-Suchtpunkte und wie Sie damit umgehen
So beschneiden Sie ein Bild in libGDX
So passen Sie TextPosition mit der iOS-Tastaturerweiterung an
So teilen Sie Dateien mit Docker Toolbox
So kompilieren Sie Java mit VsCode & Ant
[Java] Fassen Sie zusammen, wie Sie mit der Methode equals vergleichen können
[Android] Wie man mit dunklen Themen umgeht
Verwendung von BootStrap mit Play Framework
So wechseln Sie Miniaturbilder mit JavaScript
[Hinweis] Erste Schritte mit Rspec
[Java] Wie man Dateien ausgibt und schreibt!
API-basierte Steuerung mit cancancan
So richten Sie kapt ein und verwenden es
So erreichen Sie den Dateidownload mit Feign
Wie man SquashTM baut und wie man Japanisch unterstützt
So aktualisieren Sie verwandte Modelle mit accept_nested_attributes_for
So setzen Sie JAVA_HOME mit dem Appassembler-Maven-Plugin von Maven
So implementieren Sie TextInputLayout mit Validierungsfunktion
Wie man die Zehner und Einsen findet
So behandeln Sie Anmeldefehler mit devise
So löschen Sie Daten mit einem externen Schlüssel
[Einfach] So aktualisieren Sie Ruby und Bundler
So testen Sie den privaten Bereich mit JUnit
So überwachen Sie Nginx mit Docker-Compose mit Datadog