如何在 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 连接发送。