[[oktatas:programozás:java:java_json|< Java JSON]]
====== Java JSON - Moshi ======
* **Szerző:** Sallai András
* Copyright (c) 2025, Sallai András
* Szerkesztve: 2025
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Bevezetés =====
A Moshi egy Java programozói könyvtár JSON tartalmak kezelésére.
* https://github.com/square/moshi
===== Beszerzés =====
==== Maven ====
com.squareup.moshi
moshi
1.15.2
===== Employee osztály =====
package com.example;
public class Employee {
private int id;
private String name;
private String city;
private double salary;
private String birth;
public Employee() {}
public Employee(int id, String name, String city, double salary, String birth) {
this.id = id;
this.name = name;
this.city = city;
this.salary = salary;
this.birth = birth;
}
public Employee(String name, String city, double salary, String birth) {
this.name = name;
this.city = city;
this.salary = salary;
this.birth = birth;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
}
===== module-info.java =====
Ha van module-info.java fájl:
module com.example {
requires javafx.controls;
requires javafx.fxml;
requires transitive javafx.graphics;
requires com.squareup.moshi;
opens com.example to javafx.fxml, com.squareup.moshi;
exports com.example;
}
===== ArrayList-ből JSON string =====
import com.squareup.moshi.JsonAdapter;
import com.squareup.moshi.Moshi;
//...
Employee[] employeeArray = employeeList.toArray(new Employee[employeeList.size()]);
Moshi moshi = new Moshi.Builder().build();
JsonAdapter jsonAdapter = moshi.adapter(Employee[].class).indent(" ");
String json = jsonAdapter.toJson(employeeArray);
===== JSON string-ből ArrayList =====
Employee[] employees2 = jsonAdapter.fromJson(json);
ArrayList employeeList = new ArrayList<>(Arrays.asList(employees2));
System.out.println(employeeList.get(0).getName());
===== LocalDate használata =====
package com.example;
import com.squareup.moshi.FromJson;
import com.squareup.moshi.ToJson;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class LocalDateJsonAdapter {
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ISO_LOCAL_DATE;
@ToJson
String toJson(LocalDate date) {
return date.format(FORMATTER);
}
@FromJson
LocalDate fromJson(String date) {
return LocalDate.parse(date, FORMATTER);
}
}
Használat:
Moshi moshi = new Moshi.Builder()
.add(new LocalDateJsonAdapter())
.build();
JsonAdapter jsonAdapter = moshi.adapter(Employee[].class).indent(" ");