У меня есть JSON, и я хочу с ним создавать объекты.
{
"responseId": "response-id",
"session": "projects/project-id/agent/sessions/session-id",
"queryResult": {
"queryText": "End-user expression",
"parameters": {
"orderNumber": "PQL7648194AAAAA",
"lastName": "RIVERO"
},
"action": "order",
"allRequiredParamsPresent": true,
"intent": {
"name": "projects/project-id/agent/intents/intent-id",
"displayName": "[InfoVuelo] Dia-hora de salida - datos de orden"
},
"languageCode": "es"
},
"originalDetectIntentRequest": {}
}
Поля «параметров» являются переменными. Например, для одной ситуации параметры могут быть
{
"parameters": {
"email":"example@example.com"
}
}
Кроме того, у меня может быть
{
"parameters": {
"orderNumber": "PQL7648194AAAAA",
"lastName": "RIVERO"
}
}
Я создал класс Parameters
и 2 класса (OrderNumberAndLastNameParams
и EmailParams
) который расширяет Parameters
public class EmailParams implements Parameters {
private String email;
}
public class OrderNumberLastNameParams implements Parameters {
private String orderNumber;
private String lastName;
}
Мой метод для создания объектов с данным JSON файлом
public static <T> T buildBodyFromJson(String filePath, Class<T> clazz) {
ObjectMapper myMapper = new ObjectMapper();
T jsonMapper = null;
try {
jsonMapper = myMapper.readValue(new ClassPathResource(filePath).getInputStream(), clazz);
} catch (IOException e) {
fail(e.getLocalizedMessage());
}
return jsonMapper;
}
Но когда я пытаюсь построить объект, он пытается создать экземпляр Parameter
объект вместо дочерних объектов получает "Unrecognized field ... not marked as ignorable "
.