У меня есть структура данных:
{
"id": 1,
"name": "Hello",
"hotel": {
"floors": 3,
"phone": "333-22-44"
"rooms": [
{
"beds": 3
...
}....
]
...
}
Какое лучшее решение для маппинга этой структуры на сущности и обратно в json файл?
Я обычно использую Jackson.
Библиотека очень много всего разного умеет, самый простой юзкейс у нее это как раз Ваш вариант:
Для десериализации необходимо и достаточно завести в программе классы, описывающие структуру Вашего json, а затем вызвать
YourClass yourClassInstance = new ObjectMapper().readValue("{...}", YourClass.class);
для сериализации:
String json = objectMapper.writeValueAsString(yourClassInstance);
public class jackson {
static String JSON = "{" +
"\"id\": 1," +
"\"name\": \"Hello\"," +
"\"hotel\": {" +
" \"floors\": 3," +
" \"phone\": \"333-22-44\"," +
" \"rooms\": [{" +
" \"beds\": 3" +
" }]" +
" }" +
"}";
public static void main(String[] args) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
Trip trip = objectMapper.readValue(JSON, Trip.class);
System.out.println("trip = " + trip);
String json = objectMapper.writeValueAsString(trip);
System.out.println("json = " + json);
}
}
console:
trip = Trip{id=1, name='Hello', hotel=Hotel{floors=3, phone='333-22-44', rooms=[Room{beds=3}]}}
json = {"id":1,"name":"Hello","hotel":{"floors":3,"phone":"333-22-44","rooms":[{"beds":3}]}}
public class Trip {
public long id;
public String name;
public Hotel hotel;
@Override
public String toString() {
return "Trip{id=" + id + ", name='" + name + "', hotel=" + hotel + '}';
}
}
public class Hotel {
public int floors;
public String phone;
public List<Room> rooms;
@Override
public String toString() {
return "Hotel{floors=" + floors + ", phone='" + phone + "', rooms=" + rooms + '}';
}
}
public class Room {
public int beds;
@Override
public String toString() {
return "Room{beds=" + beds + '}';
}
}
pom.xml
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
</dependencies>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
я добавил TabbedActivity и теперь мой проект не работаетПри билде приложения я получаю такую ошибку