首页 > 解决方案 > 如何在 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();
           
        });

在这里,我想要那个对话。

我该如何解决这个问题?

标签: jsonamazon-web-servicesamazon-qldbamazon-ion

解决方案


有很多方法可以实现您正在尝试做的事情。但是从您的示例中选择,您可能希望将结果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 连接将其作为响应的主体发送。


推荐阅读