#java #arrays #json #parsing #jackson
Вопрос:
public class Operation {
private int id;
private String operator;
private int room;
private long operationDateMillis;
private String accessory;
private List<String> statuses;
//setters getters
}
У меня есть этот класс, и мне нужно сохранить из JSON массив Operation
в другом классе.
public class OperationRoom {
public static List<Operation> operations;
}
Вот мой файл JSON:
{
"operations": [
{
"id": 1,
"operator": "william",
"room": 1,
"operationDate": "1620042283092",
"accessory": "Security",
"statuses": [
"turned on",
"temp 10",
"fan off"
]
},
{
"id": 2,
"operator": "wilo",
"room": 5,
"operationDate": "1620042483092",
"accessory": "Security",
"statuses": [
"turned off",
"temp 15",
"fan on"
]
}
]
}
Я уже разработал класс синтаксического анализа JSON и мне удается получать узлы массива из файла JSON.
Комментарии:
1. Джексон может сделать все это за тебя. В зависимости от окружающей среды методы немного различаются. Например, Весна, аннотации и т. Д.
Ответ №1:
Вы можете использовать Jackson ObjectMapper для сопоставления JSON с вашим классом. Пример:
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Test {
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
OperationRoom operationRoom = objectMapper.readValue(getJson(), OperationRoom.class);
System.out.println(operationRoom);
}
static String getJson() {
return """
{
"operations": [
{
"id": 1,
"operator": "william",
"room": 1,
"operationDate": "1620042283092",
"accessory": "Security",
"statuses": [
"turned on",
"temp 10",
"fan off"
]
},
{
"id": 2,
"operator": "wilo",
"room": 5,
"operationDate": "1620042483092",
"accessory": "Security",
"statuses": [
"turned off",
"temp 15",
"fan on"
]
}
]
}
""";
}
}
PS: «»» -> Текстовый блок-это функция Java-13.
В ObjectMapper может быть много конфигураций сериализации и десериализации.