草庐IT

jackson-annotations

全部标签

java - 如何忽略 Jackson JSON 到对象映射中的枚举字段?

我有一个像这样的JSON对象:{"name":"John","grade":"A"}或{"name":"Mike","grade":"B"}或{"name":"Simon","grade":"C"}等等我正在尝试将上述JSON映射到:@JsonIgnoreProperties(ignoreUnknown=true)publicclassEmployee{@JsonIgnoreProperties(ignoreUnknown=true)publicenumGrade{A,B,C}Gradegrade;Stringname;publicGradegetGrade(){returngrade

java - 通用树的自定义 Jackson 序列化程序

假设我有一个用Java实现的参数化树,如下所示:publicclassTree{privatestaticclassNode{Eelement;Listchildren.}Noderoot;//...Yougettheidea.}这里的想法是,上面的实现只关心树的拓扑结构,但对实例化将存储在树中的元素一无所知。现在,假设我希望我的树元素是地理。它们以树状组织的原因是大陆包含国家,国家包含州或省,等等。为简单起见,地理具有名称和类型:publicclassGeoElement{Stringname;Stringtype;}因此,最终,地理层次结构如下所示:publicclassGeogr

java - jackson 反序列化 JsonIdentityReference (alwaysAsId = true)

跟进这个问题:Questionhere@JsonIdentityReference(alwaysAsId=true)和@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class)从序列化端开始运行良好,但在反序列化时效果不佳,因为它无法解析对象ID引用。有没有办法让它反序列化?编写自定义反序列化器似乎有点矫枉过正。 最佳答案 您可以使用简单的setter反序列化器来代替自定义反序列化器:publicclassContainer{@JsonIdentit

java - jackson 无法访问 com.fasterxml.jackson.core.ObjectCodec

此问题是thisone的后续问题.我似乎无法通过以下代码访问jackson库:importcom.fasterxml.jackson.databind.DeserializationFeature;importcom.fasterxml.jackson.databind.ObjectMapper;importcom.fasterxml.jackson.databind.ObjectReader;importcom.fasterxml.jackson.databind.ObjectWriter;importjava.io.IOException;importjava.util.Array

java - 具有未知动态属性的 jackson 反序列化

我有一个像这样的JSON字符串:"shipping_profiles":{"563":{"name":"name","value":"value"},"564":{"name":"name","value":"value"},"565":{"name":"name","value":"value"},"566":{"name":"name","value":"value"}}现在我用Jackson2.0解析它。我正在尝试获得List来自JSON字符串。这可能吗? 最佳答案 您的shipping_profiles属性看起来不像数组。它

java - 从 Java Annotation Processor 访问源代码

我正在尝试从Java注释处理器中访问某种类型的实际原始源代码。这有可能吗?谢谢! 最佳答案 我遇到了一个问题,我必须访问一些源代码(非字符串/非原始常量的初始化代码)并通过CompilerTreeAPI访问源代码解决了这个问题.这是一般的配方:1。创建自定义TreePathScanner:privatestaticclassCodeAnalyzerTreeScannerextendsTreePathScanner{privateStringfieldName;privateStringfieldInitializer;publicv

java - jackson :如何仅序列化带注释的属性

我想在使用Jackson时定义我的自定义序列化策略(要包含哪些字段)。我知道,我可以使用View/过滤器来做到这一点,但它引入了非常糟糕的事情-使用字段名称的字符串表示,这会自动启用自动重构问题。我如何强制Jackson只序列化带注释的属性,仅此而已? 最佳答案 如果您禁用所有自动检测,它应该只序列化您已注释的属性——无论是属性本身还是getter。这是一个简单的例子:privateObjectMapperom;@BeforepublicvoidsetUp()throwsException{om=newObjectMapper();

java - 在序列化我的对象时,如何强制 Jackson 将数字写成字符串

我的一个Java对象上有一个非常大的ID。当jackson将其转换为JSON时,它会将其作为数字发送(例如{"id":1000110040000000001}),但一旦它成为javascript对象,id就会更改为1000110040000000000。我读到了这个问题here当id较小时它工作正常。我的第一个想法是强制Jackson将所有数字转换为字符串,但我也对其他选项持开放态度。如果可能的话,我宁愿不向我的java对象添加Jackson注释。 最佳答案 Jackson-databind(至少2.1.3)提供特殊的ToStrin

java - java.lang.annotation.Retention的原因是什么?

我很清楚RetentionPolicy的含义,知道它们做什么以及何时做seemstomakesensetousethem.对于我自己的注释,我完全知道它们是否在运行时、类文件中或仅用于编译时需要。但是,对于库中定义的任何注释,恕我直言,您永远无法确定。例如,javax.annotation.Generated用于标记生成的代码,但它很少有用。由于AFAIK处理字节码的工具多于处理源代码的工具,因此信息在可以使用之前就消失了。作为运行时不存在的注释don'tthrowClassNotFoundException(不同于例如缺少接口(interface)),使用RetentionPolic

java - Jackson JSON、不可变类和接口(interface)

我正在使用Jackson示例,但在使用不可变类和接口(interface)进行反序列化时遇到了一些问题。下面是我的代码:packagecom.art.starter.jackson_starter;importjava.io.IOException;importjava.io.StringReader;importjava.io.StringWriter;importorg.codehaus.jackson.JsonGenerationException;importorg.codehaus.jackson.map.JsonMappingException;importorg.code