#json #amazon-web-services #ion #amazon-qldb
Вопрос:
Я написал запрос QLDB для извлечения документа по идентификатору документа, чтобы преобразовать этот документ в ответ JSON и передать его через конечную точку rest.
qldbDriver.QldbDriver().execute(txn ->{
IonSystem ionSys = IonSystemBuilder.standard().build();
Result result = txn.execute("SELECT * FROM _ql_committed_WALLET WHERE metadata.id = ?",ionSys.newString(id));
IonStruct person = (IonStruct) result.iterator().next();
String s = person.get("data").toPrettyString();
});
Вот я и хочу этого разговора.
Как я могу исправить эту проблему?
Ответ №1:
Есть много способов достичь того, что вы пытаетесь сделать. Но, исходя из вашего примера, вы можете захотеть преобразовать свой результат person
непосредственно в JSON или использовать библиотеку для создания этого JSON. Если возможно преобразовать из IonValue
(из которых IonStruct
есть экземпляр) в POJOs, а затем вы можете преобразовать их в JSON с помощью Джексона.
import com.fasterxml.jackson.dataformat.ion.IonObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
...
IonValue personValue = qldbDriver.QldbDriver().execute(txn ->{
IonSystem ionSys = IonSystemBuilder.standard().build();
Result result = txn.execute("SELECT * FROM _ql_committed_WALLET WHERE metadata.id = ?",ionSys.newString(id));
return (IonStruct) result.iterator().next();
});
Person person = IonObjectMapper.builder().build().readValue(personValue, Person.class);
String personJson = new ObjectMapper().writeValueAsString(person);
В этом примере мы берем IonValue
as, возвращенный из QLDB, и преобразуем его в POJO с помощью библиотеки Jackson Ion. Затем мы используем обычную библиотеку JSON Jackson для преобразования того же Person
POJO в строку JSON, которую вы затем можете отправить по своему соединению REST в качестве тела ответа.
Комментарии:
1. Еще раз спасибо @alpian