gpt4 book ai didi

java - 使用 JAX-RS 处理 JSON 响应

转载 作者:行者123 更新时间:2023-11-30 03:32:15 25 4
gpt4 key购买 nike

I have a json payload like this:

{
"account": {

"sample_id": 1424876658095,
"parameters": [
{
"name": "email",
"value": "hello@xyz.com"
},
{
"name": "first_name",
"value": "FIRSTNAME"
},
{
"name": "last_name",
"value": "LASTNAME"
}
]
},
"assests": [ {

"tran_id": "1234567",

}]
}

上面的 json 负载是在 Rest API 调用的响应中生成的。我想在 java 中处理这个响应以生成如下内容:

{
"account": {

"sample_id": 1424876658095,
"email_id": "hello@xyz.com",
"first_name": "FIRSTNAME",
"last_name": "LASTNAME",
},
"assets": [ {

"tran_id": "1234567",

}]
}

我正在使用 REST API 的 JAX-RS 规范,但我找不到任何库来处理响应。

最佳答案

如果您想在 JAX-R 中利用 Jackson 序列化,则需要实现为自定义序列化程序。

有两个步骤可以做到这一点:

  • 创建自定义序列化程序

    这里是一个基于 bean AccountBeanParameterBean 的自定义 Jackson 序列化器示例,可满足您的需求:

    public class AccountBeanSerializer extends JsonSerializer<AccountBean> {
    @Override
    public void serialize(AccountBean accountBean, JsonGenerator jgen,
    SerializerProvider provider) throws IOException,
    JsonProcessingException {
    jgen.writeStartObject();
    jgen.writeNumberField("sample_id", accountBean.getSampleId());
    List<ParameterBean> parameters = accountBean.getParameters();
    for (ParameterBean parameterBean : parameters) {
    jgen.writeStringField(parameterBean.getName(),
    parameterBean.getValue());
    }
    jgen.writeEndObject();
    }
    }

    如果是这样的话,我假设您的回复属于该类别:

    class ResponseBean
    field account = class AccountBean
    field sampleId (long)
    field parameters = class ParameterBean
    (...)
  • 注册自定义序列化程序

    然后,您需要在上下文解析器中提供自定义 Jackson 配置。为此,您可以创建使用 Provider 注释的接口(interface) ContextResolver 的实现。

    @Provider
    public class CustomJacksonConfig implements ContextResolver<ObjectMapper> {
    private ObjectMapper objectMapper;

    public JacksonConfig() {
    this.objectMapper = new ObjectMapper();
    SimpleModule module = new SimpleModule("MyModule", new Version(1, 0, 0, null));
    module.addSerializer(AccountBean.class, new AccountSerializer());
    this.objectMapper.registerModule(module);
    }

    public ObjectMapper getContext(Class<?> objectType) {
    return objectMapper;
    }
    }

以下链接可以帮助您:

希望这有帮助,蒂埃里

关于java - 使用 JAX-RS 处理 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28753109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com