当前位置: 首页 > 知识库问答 >
问题:

Jackson:接受任何json的属性

费星晖
2023-03-14
public class A {

  public int a;
  public String anyJson1;
  public String anyJson2;
  public String anyJson3;
}
{"a":5, "anyJson1":[1,2,3], "anyJson2:4, "anyJson3":{"c":"d"}}

嵌套异常是com.fasterxml.jackson.databind.jsonMappingException:无法从START_OBJECT令牌反序列化java.lang.String实例

共有1个答案

傅自明
2023-03-14

@jsonrawvalue只用于序列化。

如果您可以将字符串字段更改为Object,您就可以了。

如果不能,可以使用简单的自定义反序列化器:

public class AnythingToString extends JsonDeserializer<String> {

    @Override
    public String deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
        TreeNode tree = jp.getCodec().readTree(jp);
        return tree.toString();
    }
}
public static class A {

    public A() {}

    private int a;
    @JsonDeserialize(using = AnythingToString.class)
    private String anyJson1;
    @JsonDeserialize(using = AnythingToString.class)
    private String anyJson2;
    @JsonDeserialize(using = AnythingToString.class)
    private String anyJson3;
 类似资料:
  • 在开始新的Jakarta(9)项目时,我需要使用“javax”JSON-P API处理旧的(遗留库和模块)。通常我们以这个错误结束: java:不兼容类型:jakarta。json。JsonObject无法转换为javax。json。JsonObject公司 不幸的是,旧代码使用了各种javax。json。*类,尤其是JsonObject,这些类在新模块的方法中不可用(因为它们使用的是jakart

  • 有人知道如何接受在Edge工作吗? 在Chrome 44,Firefox 39,IE 11,Opera 31中运行良好。

  • 我有以下课程- 我如何通过使用Jackson JSON API动态地排除字段序列化?

  • 我有一个简单的模板结构将字符串与值关联起来 我有一个函数,我希望接受1个或多个任何类型的字段,这些字段可能是不同的类型,所以我使用,因为据我所知,C++缺少类型化变量参数,不能确定变量参数的大小,并且必须至少有一个其他参数来确定从哪里开始。 问题是我不知道如何告诉它接受可能是不同类型的字段。在Java中,我只使用,但是C++缺少类型化变量参数和通配符。我唯一的另一个想法是使参数类型为,但这似乎是一

  • 问题内容: 我试图了解如何使用WCF数据服务(基于EF 4.1)创建一个宁静的Web服务,该服务将保留作为JSON对象传递的实体。 我已经能够创建一种方法,该方法可以接受以一组原始数据类型作为参数的GET请求。我不喜欢这种解决方案,我更喜欢在HTTP请求正文中发送带有JSON对象的POST请求。 我发现我无法获得将json序列化为对象的框架,但是我可以手动完成。 我的问题是我似乎无法读取POST请

  • 在我的应用程序的最后一步,当我想用“npm运行包赢”命令构建我的桌面应用程序(适用于视窗10操作系统)时,我在标题中得到了同样的警告。另一个问题是应用程序的exe文件发生,但给错误。"代码执行无法继续,因为没有找到ffmpeg.dll。重新安装程序可能会解决问题。" 我重新安装了几次程序,我更改了我的package.json脚本,我认为这是因为asar的依赖关系 PS C:\用户\osman.tu