Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.
Преобразование между данными JSON и объектами Java * Парсер JSON: * Распространенные парсеры: Jsonlib, Gson, fastjson, jackson. 1. Преобразование объектов Java в JSON 1. Шаги использования: 1. Импортируйте соответствующий пакет jar jackson. 2. Создайте основной объект Джексона ObjectMapper. 3. Вызовите соответствующие методы ObjectMapper для преобразования. 1. Метод преобразования: * writeValue(параметр 1, объект): Параметр 1: Файл: преобразуйте объект obj в строку JSON и сохраните его в указанном файле. Writer: преобразование объекта obj в строку JSON и заполнение данных json в поток вывода символов. OutputStream: преобразование объекта obj в строку JSON и заполнение данных json в поток вывода байтов. * writeValueAsString(obj): преобразовать объект в строку json. 2. Примечания: 1. @JsonIgnore: чтобы исключить преобразование определенного атрибута в JSON, добавьте эту аннотацию к атрибутам класса. 2. @JsonFormat: значение атрибута представляет собой форматированную строку даты, которая представляет собой время в часовом поясе по умолчанию. * @JsonFormat(шаблон = «гггг-ММ-дд») личная дата рождения; @JsonFormat(pattern = «гггг-ММ-дд ЧЧ:мм:сс», часовой пояс = «GMT+8») //Добавить 8 часов к часовому поясу по умолчанию 3. Укажите псевдоним для преобразования строки json @JsonProperty («имя пользователя») @JsonProperty("имя пользователя") частное имя строки; 4. Если значение этого поля равно нулю, оно не будет преобразовано в JSON. @JsonInclude(JsonInclude.Include.NON_NULL) //Если значение этого поля равно нулю, оно не будет преобразовано в JSON частный длинный номер // ноль; 3. Сложное преобразование объектов Java 1. Список: Массив 2. Карта: формат объекта единообразен. 2. Преобразование JSON в объект Java 1. Импортируйте соответствующий пакет jar jackson. 2. Создайте основной объект Джексона ObjectMapper. 3. Вызовите соответствующие методы ObjectMapper для преобразования. 1. readValue (строковые данные JSON, класс) *Приложение Ajax: проверьте, существует ли имя пользователя. 1. Данные, возвращаемые сервером, должны использоваться в формате данных json при использовании на клиенте. Есть два решения: 1. $.get(type): укажите тип последнего параметра как «json». 2. Установите тип MIME на стороне сервера. response.setContentType("application/json;charset=utf-8"); //Настраиваем междоменные запросы response.setHeader("Access-Control-Allow-Origin","*");
Тестовый класс:
public class MyTest {
public static void main(String[] args) {
//Данные, передаваемые службой регистрации на серверную часть, обычно имеют два формата.
// username=zhangsan&password=123456&age=23
//{"username":"Чжан Сан","пароль":"123456"}
//Преобразуем строку json в объект Java
String jsonStr = "{\"имя пользователя\":\"Чжан Сан\", \"пароль\":\"123456\"}";
String s = jsonStr.replaceAll("[{}\"]", "");
System.out.println(s);
String[] strings = s.split(",");
System.out.println(strings[0]);
System.out.println(strings[1]);
String[] a = strings[0].split(":");
System.out.println(a[0]);
System.out.println(a[1]);
String[] b = strings[1].split(":");
System.out.println(b[0]);
System.out.println(b[1]);
User user = new User();
user.setUsername(a[1]);
user.setPasswrod(b[1]);
System.out.println(user);
}
}
Пользовательский объект:
public class User {
private String username;
private String passwrod;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPasswrod() {
return passwrod;
}
public void setPasswrod(String passwrod) {
this.passwrod = passwrod;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", passwrod='" + passwrod + '\'' +
'}';
}
}
Обычное преобразование (String jsonStr = "{"username":"Чжан Сан","пароль":"123456"}";)
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
public class MyTest {
public static void main(String[] args) throws IOException {
//Преобразуем объект Java в строку JSON
//String jsonStr = "{\"имя пользователя\":\"Чжан Сан\", \"пароль\":\"123456\"}";
User user = new Пользователь("Ван Ву", "123456", 20, "18856259632");
Car car = new Car();
car.setCarName("BMW");
car.setCarPrice(888888.0);
//user.setCar(car);
ArrayList<String> list = new ArrayList<>();
list.add("Мэгги Чунг");
list.add("Ван Цзусянь");
user.setGirlfriend(list);
ObjectMapper mapper = new ObjectMapper();
String jsonStr = mapper.writeValueAsString(user);
System.out.println(jsonStr);
//{"username":"Ван Ву","password":"123456","age":20,"phoneNum":"18856259632",car:{carName:"BMW",carPrice:8888},girlfriend: ["Лю Ифэй", "Мэгги Чунг"]}
//Сохраняем преобразованные данные в файл
mapper.writeValue(new File("a.json"), user);
}
}
Вложенный массив json ([{},{},{}])
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
public class MyTest2 {
public static void main(String[] args) throws IOException {
//[{},{},{}]
User user1 = new Пользователь("Ван Ву", "12345685", 20, "18856259632");
User user2 = new Пользователь("Чжао Лю", "12345685", 28, "18856259632");
User user3 = new Пользователь("Тяньци", "12345776", 24, "18856259632");
ArrayList<User> list = new ArrayList<>();
list.add(user1);
list.add(user2);
list.add(user3);
ObjectMapper mapper = new ObjectMapper();
String s = mapper.writeValueAsString(list);
System.out.println(s);
//Сохраняем преобразованные данные в файл
mapper.writeValue(new File("b.json"), list);
}
}
{“user1”:{},“user2”:{},“user3”:{}}
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
public class MyTest3 {
public static void main(String[] args) throws IOException {
//{"user1":{},"user2":{},"user3":{}}
User user1 = new Пользователь("Ван Ву", "12345685", 20, "18856259632");
User user2 = new Пользователь("Чжао Лю", "12345685", 28, "18856259632");
User user3 = new Пользователь("Тяньци", "12345776", 24, "18856259632");
HashMap<String, User> hm = new HashMap<>();
hm.put("user1", user1);
hm.put("user2", user2);
hm.put("user3", user3);
ObjectMapper mapper = new ObjectMapper();
String s = mapper.writeValueAsString(hm);
System.out.println(s);
//Сохраняем преобразованные данные в файл
mapper.writeValue(new File("c.json"), hm);
}
}
Класс пользователя и класс автомобиля
public class User {
private String username;
private String password;
private int age;
private String phoneNum;
private Car car;
private List<String> girlfriend;
public User() {
}
public User(String username, String password, int age, String phoneNum) {
this.username = username;
this.password = password;
this.age = age;
this.phoneNum = phoneNum;
}
public User(String username, String password, int age, String phoneNum, Car car, List<String> girlfriend) {
this.username = username;
this.password = password;
this.age = age;
this.phoneNum = phoneNum;
this.car = car;
this.girlfriend = girlfriend;
}
public List<String> getGirlfriend() {
return girlfriend;
}
public void setGirlfriend(List<String> girlfriend) {
this.girlfriend = girlfriend;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPhoneNum() {
return phoneNum;
}
public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum;
}
}
public class Car {
private String carName;
private Double carPrice;
public String getCarName() {
return carName;
}
public void setCarName(String carName) {
this.carName = carName;
}
public Double getCarPrice() {
return carPrice;
}
public void setCarPrice(Double carPrice) {
this.carPrice = carPrice;
}
@Override
public String toString() {
return "Car{" +
"carName='" + carName + '\'' +
", carPrice=" + carPrice +
'}';
}
}
Тестовый класс:
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Date;
public class MyTest {
public static void main(String[] args) throws JsonProcessingException {
User user = new User();
user.setUsername("zhangsan");
user.setAge(12);
user.setPassword("999999");
user.setPhoneNum("110");
user.setBirthday(new Date());
user.setSal(2000.0);
ObjectMapper mapper = new ObjectMapper();
String s = mapper.writeValueAsString(user);
System.out.println(s);
}
}
Класс пользователя:
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Date;
public class User {
@JsonProperty("name") //Указываем имя ключа в символах json
private String username;
@JsonIgnore//Исключите определенный атрибут из преобразования в JSON и добавьте эту аннотацию к атрибуту класса.
private String password;
private int age;
//@JsonIgnore
private String phoneNum;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date birthday;
@JsonInclude(JsonInclude.Include.NON_NULL)
private Double sal;
public Double getSal() {
return sal;
}
public void setSal(Double sal) {
this.sal = sal;
}
public User() {
}
public User(String username, String password, int age, String phoneNum) {
this.username = username;
this.password = password;
this.age = age;
this.phoneNum = phoneNum;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPhoneNum() {
return phoneNum;
}
public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum;
}
}
Тестовый класс:
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class MyTest {
public static void main(String[] args) throws IOException {
String jsonStr = "{\"имя пользователя\":\"Чжан Сан\", \"пароль\":\"123456\"}";
//Убедитесь, что имена, типы и иерархические структуры атрибутов предоставленных вами классов Java соответствуют строкам json.
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(jsonStr, User.class);
System.out.println(user);
}
}
Класс пользователя:
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
Класс автомобиля:
public class Car {
private String carName;
private Double carPrice;
public String getCarName() {
return carName;
}
public void setCarName(String carName) {
this.carName = carName;
}
public Double getCarPrice() {
return carPrice;
}
public void setCarPrice(Double carPrice) {
this.carPrice = carPrice;
}
@Override
public String toString() {
return "Car{" +
"carName='" + carName + '\'' +
", carPrice=" + carPrice +
'}';
}
}
Класс дома:
public class House {
private String houseName;
private Double housePrice;
public String getHouseName() {
return houseName;
}
public void setHouseName(String houseName) {
this.houseName = houseName;
}
public Double getHousePrice() {
return housePrice;
}
public void setHousePrice(Double housePrice) {
this.housePrice = housePrice;
}
@Override
public String toString() {
return "House{" +
"houseName='" + houseName + '\'' +
", housePrice=" + housePrice +
'}';
}
}
Класс человека:
import java.util.List;
public class Person {
private String username;
private Integer age;
private Car car;
private List<String> girlfriend;
private List<House> house;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
public List<String> getGirlfriend() {
return girlfriend;
}
public void setGirlfriend(List<String> girlfriend) {
this.girlfriend = girlfriend;
}
public List<House> getHouse() {
return house;
}
public void setHouse(List<House> house) {
this.house = house;
}
@Override
public String toString() {
return "Person{" +
"username='" + username + '\'' +
", age=" + age +
", car=" + car +
", girlfriend=" + girlfriend +
", house=" + house +
'}';
}
}
Тестовый класс:
импортировать com.fasterxml.jackson.databind.ObjectMapper;
импортировать java.io.IOException;
публичный класс MyTest {
public static void main(String[] args) выдает IOException {
//{"username":"Ван Ву","age":20,"car":{"carName":"BMW","carPrice":8888},"girlfriend":["Лю Ифэй","Мэгги Чунг" ],"house":[{"houseName":"Риверсайд Гарден",
// "housePrice":50000},
// {"houseName":"Balenciaga","housePrice":150000}]}
String jsonStr = "{\"имя пользователя\":\"Ван Ву\",\"возраст\":20,\"car\":{\"carName\":\"BMW\",\"carPrice\":8888} ,\"подруга\":[\"Лю Ифэй\",\"Мэгги Чунг\"]," +
"\"house\":[{\"houseName\":\"Riverside Garden\",\"housePrice\":50000},{\"houseName\":\"Balenciaga\",\"housePrice\ ": 150000}]}";
ObjectMapper mapper = new ObjectMapper();
Person person = mapper.readValue(jsonStr, Person.class);
System.out.println(person);
}
}
Тестовый класс:
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class MyTest {
public static void main(String[] args) throws IOException {
String jsonStr = "{\"data\":{\"вчера\":{\"date\":\"Четверг, 20-е число\",\"high\":\"Высокая температура 2℃», «fx»: «Юго-восточный ветер», «низкий»: «низкая температура» 0℃\"," +
"\"fl\":\"<![CDATA[2сорт]]>\",\"type\":\"туман\"},\"city\":\"Шанлуо\",\"forecast\":[{\"date\":\"Пятница, 21-е\",\"high\":\"высокая температура 0℃\"," +
"\"fengli\":\"<![CDATA[2сорт]]>\",\"low\":\"низкая температура -1℃\",\"фэнсян\":\"Юго-восточный ветер\",\"тип\":\"Легкий снег\"},{\"дата\":\"Суббота, 22-е\",\" высокий \":\"высокая температура 2℃\"," +
"\"fengli\":\"<![CDATA[1сорт]]>\",\"low\":\"низкая температура -1℃\",\"фэнсян\":\"Юго-восточный ветер\",\"тип\":\"Легкий снег\"},{\"дата\":\"Воскресенье, 23-е\",\" высокий \":\"высокая температура 1℃\"," +
"\"fengli\":\"<![CDATA[1сорт]]>\",\"low\":\"низкая температура -2℃\",\"фэнсян\":\"Юго-восточный ветер\",\"тип\":\"Легкий снег\"},{\"дата\":\"Понедельник, 24 число\",\" высокий \":\"Высокая температура 1℃\"," +
"\"fengli\":\"<![CDATA[1сорт]]>\",\"low\":\"низкая температура -4℃\", \"фэнсян\": \"северо-западный ветер\", \"тип\": \"пасмурно\"}, {\"дата\": \"вторник, 25-е\", \"высокая температура \":\"высокая температура 1℃\"," +
"\"fengli\":\"<![CDATA[1сорт]]>\",\"low\":\"низкая температура -4℃\",\"фэнсян\":\"Северный ветер\",\"тип\":\"Инь\"}]," +
«Ганьмао»: «Когда простуда является обычным явлением, сократите частоту выхода на улицу, пополните запасы воды и наденьте или снимите одежду соответствующим образом. \",\"wendu\":\"-1\"},\"status\":1000,\"desc\":\"OK\"}";
ObjectMapper mapper = new ObjectMapper();
TianQi tianQi = mapper.readValue(jsonStr, TianQi.class);
String date = tianQi.getData().getYesterday().getDate();
System.out.println(date);
}
}
Категория Тянь Ци:
@JsonIgnoreProperties(ignoreUnknown = true)
public class TianQi {
/**
* data : {"вчера":{"date":"Четверг, 20-е","high":"Высокая температура 2℃","fx":"Юго-восточный ветер","low":"Низкая температура 0℃","fl":"<![CDATA[2сорт]]>","type":"туман"},"city":"Шанлуо","forecast":[{
* "date":"Пятница, 21-е","high":"Высокая температура 0℃","fengli":"<![CDATA[2сорт]]>","low":"низкая температура -1℃","fengxiang":"Юго-восточный ветер","type":"Легкий снег"},{"date":"Суббота, 22-е","high":"Высокая температура 2℃",
* "fengli":"<![CDATA[1сорт]]>","low":"низкая температура -1℃","fengxiang":"Юго-восточный ветер","type":"Легкий снег"},{"date":"Воскресенье, 23-е","high":"Высокая температура 1℃","fengli":"<![CDATA[1сорт]]>","low":"низкая температура
* -2℃","fengxiang":"Юго-восточный ветер","type":"Легкий снег"},{"date":"Понедельник, 24-е","high":"Высокая температура 1℃","fengli":"<![CDATA[1сорт]]>","low":"низкая температура -4℃","fengxiang":"Северо-западный ветер","type":"Инь"},{
* "date":"Вторник, 25-е","high":"Высокая температура 1℃","fengli":"<![CDATA[1сорт]]>","low":"низкая температура -4℃","fengxiang":"Северный ветер","type":"Инь"}],"ganmao
* «:»Когда простуда является обычным явлением, сократите частоту выходов на улицу, пополните запасы воды и наденьте или снимите одежду соответствующим образом. ","венду":"-1"}
* status : 1000
* desc : OK
*/
private DataBean data;
private int status;
private String desc;
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static class DataBean {
/**
* yesterday : {"date":"Четверг, 20-е","high":"Высокая температура 2℃","fx":"Юго-восточный ветер","low":"Низкая температура 0℃","fl":"<![CDATA[2сорт]]>","type":"туман"}
* city : Шанлуо
* forecast : [{"date":"Пятница, 21-е","high":"Высокая температура 0℃","fengli":"<![CDATA[2сорт]]>","low":"низкая температура -1℃","fengxiang":"Юго-восточный ветер","type":"Легкий снег"},{"date":"Суббота, 22-е",
* "высокий":"высокая температура 2℃","fengli":"<![CDATA[1сорт]]>","low":"низкая температура -1℃","fengxiang":"Юго-восточный ветер","type":"Легкий снег"},{"date":"Воскресенье, 23-е","high":"Высокая температура 1℃",
* "fengli":"<![CDATA[1сорт]]>","low":"низкая температура -2℃","fengxiang":"Юго-восточный ветер","type":"Легкий снег"},{"date":"Понедельник, 24-е","high":"Высокая температура 1℃","fengli":"<![CDATA[1сорт]]>",
* "low":"низкая температура -4℃","fengxiang":"Северо-западный ветер","type":"Инь"},{"date":"Вторник, 25-е","high":"Высокая температура 1℃","fengli":"<![CDATA[1сорт]]>","low":"низкая температура -4℃","фэнсян":"Северный ветер",
* "type":"Инь"}]
* ganmao : В период предрасположенности к простудам соответствующим образом сократите частоту выхода на улицу, пополняйте запасы воды и соответствующим образом надевайте или снимайте одежду.
* wendu : -1
*/
private YesterdayBean yesterday;
private String city;
private String ganmao;
private String wendu;
private List<ForecastBean> forecast;
public YesterdayBean getYesterday() {
return yesterday;
}
public void setYesterday(YesterdayBean yesterday) {
this.yesterday = yesterday;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getGanmao() {
return ganmao;
}
public void setGanmao(String ganmao) {
this.ganmao = ganmao;
}
public String getWendu() {
return wendu;
}
public void setWendu(String wendu) {
this.wendu = wendu;
}
public List<ForecastBean> getForecast() {
return forecast;
}
public void setForecast(List<ForecastBean> forecast) {
this.forecast = forecast;
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static class YesterdayBean {
/**
* date : Четверг, 20-е
* high : высокая температура 2℃
* fx : Юго-восточный ветер
* low : низкая температура 0℃
* fl : <![CDATA[2сорт]]>
* type : туман
*/
private String date;
private String high;
private String fx;
private String low;
private String fl;
private String type;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getHigh() {
return high;
}
public void setHigh(String high) {
this.high = high;
}
public String getFx() {
return fx;
}
public void setFx(String fx) {
this.fx = fx;
}
public String getLow() {
return low;
}
public void setLow(String low) {
this.low = low;
}
public String getFl() {
return fl;
}
public void setFl(String fl) {
this.fl = fl;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static class ForecastBean {
/**
* date : Пятница, 21-е
* high : высокая температура 0℃
* fengli : <![CDATA[2сорт]]>
* low : низкая температура -1℃
* fengxiang : Юго-восточный ветер
* type : Сяосюэ
*/
private String date;
private String high;
private String fengli;
private String low;
private String fengxiang;
private String type;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getHigh() {
return high;
}
public void setHigh(String high) {
this.high = high;
}
public String getFengli() {
return fengli;
}
public void setFengli(String fengli) {
this.fengli = fengli;
}
public String getLow() {
return low;
}
public void setLow(String low) {
this.low = low;
}
public String getFengxiang() {
return fengxiang;
}
public void setFengxiang(String fengxiang) {
this.fengxiang = fengxiang;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
}
}
Описание: Создайте класс погоды и установите плагин GsonFormat в IDEA для преобразования сложных строк JSON в объекты Java.
Затем на странице нового класса щелкните правой кнопкой мыши, чтобы открыть «Создать». После ввода найдите параметр GsonFormat. После ввода вставьте строку JSON, которую необходимо преобразовать. Нужный объект Java будет сгенерирован автоматически. После входа нажмите кнопку настройки в левом нижнем углу, чтобы установить используемый пакет jar.
Наконец, строка JSON будет автоматически преобразована в объект Java.
Заявление об авторских правах: Содержание этой статьи добровольно предоставлено пользователями Интернета, а мнения, выраженные в этой статье, представляют собой только точку зрения автора. Данный сайт лишь предоставляет услуги по хранению информации, не имеет никаких прав собственности и не несет соответствующей юридической ответственности. Если вы обнаружите на этом сайте какое-либо подозрительное нарушение авторских прав/незаконный контент, отправьте электронное письмо, чтобы сообщить. После проверки этот сайт будет немедленно удален.
Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/192958.html Исходная ссылка: https://javaforall.cn