gpt4 book ai didi

java - 使用 Jackson 注解从 JSON 转换

转载 作者:行者123 更新时间:2023-12-01 10:19:24 25 4
gpt4 key购买 nike

我正在尝试使用 Play 框架将 JSON 转换为 Java 对象。我无法轻松控制输入 JSON,其中名称中包含破折号。

{ "field-name": "value" }

因此,我无法创建具有到 JSON 的默认映射的 Java 对象。我有一个类,如下所示:

import com.fasterxml.jackson.annotation.JsonProperty;

public class Data {
@JsonProperty("field-name")
public String fieldName;
}

我知道Play 2.4 uses Jackson , 和我有一个单元测试,它能够使用默认的 Jackson ObjectMapper 从 JSON 填充对象。

JSON 是 POST 请求的正文,我尝试像这样使用它:

    Form<Data> form = Form.form(Data.class).bindFromRequest();

如果我打印表单,我可以看到数据字段填充了预期的值。但是,当我执行 form.get() 时,返回值有一个空字段。 (实际代码中还有更多的字段,都是String或者long,都是null或者0。)

我是否尝试以错误的方式自定义 JSON 反序列化?还是我做错了什么?

最佳答案

正如您所预料的,您使用了错误的反序列化方式。 Forms 类仅适用于 PlayForms,不适用于 Json 请求。看看BodyParserJsonActions文档:

@BodyParser.Of(BodyParser.Json.class)
public Result index() {
RequestBody body = request().body();
Data data = Json.fromJson(body.asJson(), Data.class);
return ok("Got java object: " + data.toString());
}

关于java - 使用 Jackson 注解从 JSON 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35710543/

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