如何在 java 中将 Amazon QLDB IonStruct 转换为 Json?
How to convert Amazon QLDB IonStruct to Json in java?
我编写了一个 QLDB 查询来通过文档 ID 获取文档,因此我想将此文档转换为 JSON 响应并通过其余端点传递它。
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();
});
我想要那个对话。
我该如何解决这个问题?
有很多方法可以实现您想要做的事情。但是从您的示例中可以看出,您可能希望将结果 person
直接转换为 JSON,或者您可能希望使用库来生成 JSON。如果可以从 IonValue
(其中 IonStruct
是一个实例)转换为 POJO,然后您可以使用 Jackson 将它们转换为 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);
在此示例中,我们将从 QLDB 返回的 IonValue
转换为 POJO,使用 Jackson Ion library. Then we use the regular JSON Jackson library 将相同的 Person
POJO 转换为 JSON 字符串,然后您可以将其作为响应正文通过 REST 连接发送。
我编写了一个 QLDB 查询来通过文档 ID 获取文档,因此我想将此文档转换为 JSON 响应并通过其余端点传递它。
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();
});
我想要那个对话。
我该如何解决这个问题?
有很多方法可以实现您想要做的事情。但是从您的示例中可以看出,您可能希望将结果 person
直接转换为 JSON,或者您可能希望使用库来生成 JSON。如果可以从 IonValue
(其中 IonStruct
是一个实例)转换为 POJO,然后您可以使用 Jackson 将它们转换为 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);
在此示例中,我们将从 QLDB 返回的 IonValue
转换为 POJO,使用 Jackson Ion library. Then we use the regular JSON Jackson library 将相同的 Person
POJO 转换为 JSON 字符串,然后您可以将其作为响应正文通过 REST 连接发送。