json - 如何在 Java 中将 Amazon QLDB IonStruct 转换为 Json?
问题描述
我编写了一个 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);
在此示例中,我们使用IonValue
从 QLDB 返回的 as 并将其转换为使用Jackson Ion 库的 POJO 。然后我们使用常规 JSON Jackson 库将相同Person
的 POJO 转换为 JSON 字符串,然后您可以通过 REST 连接将其作为响应的主体发送。
推荐阅读
- swift - 如何更改名为 Error 的 Struct 以在 swift 中实现错误协议
- java - 如何使用 Spring Data JDBC 处理多对多关系中的元数据?
- r - R中矩阵的有效子集化和列求和
- php - 分页渴望加载的关系
- javascript - 如果数组位置是从变量填充的,那么后续比较是否会导致与变量名称或变量内容的比较
- amazon-web-services - AWS CLI:将 JSON 加载到 DynamoDB
- python - 如何优化 pandas 应用功能
- linux - Linux:强制从命令行触发 PCIe MSI 中断
- postgresql - 通过 pg_dumpall 将 db 从 pgsql 9.5 迁移到 12.4 不包括所有表
- extjs - ExtJS - 无法找到支持的框架