草庐IT

java - @JsonInclude(Include.NON_NULL) 不工作/ jackson 序列化空值

我已经在类/pojo上放置了注释并配置了映射器,但它仍然序列化null值我正在使用Hibernate4.3.7Final和Jackson2.4.4。这些集合是延迟加载Pojo:删除了getter和setter@JsonInclude(Include.NON_NULL)@Entity@TablepublicclassSchool{@Id@GeneratedValueprivateintid;@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)privateListstudents;@OneToMany(cascade=Casca

java - jackson 忽略外部库中父类(super class)的所有属性

我正在使用ORM进行开发,我在其中扩展基orm类以创建表。例如:publicclassPersonextendsDbItem{@JsonIgnoreprivateStringindex;privateStringfirstName;privateStringlastName;}问题是,当我使用ObjectMapper进行序列化时,它会尝试序列化DbItem类的成员。有什么简单的方法可以防止这种情况发生吗?例如带有注释。我看过一个类似的问题Jacksonserialization:howtoignoresuperclassproperties但我希望它可以做得更简单,我不确定我是否可以这

java - 指定 Jackson 的字段命名策略

我有关于使用Jackson将bean序列化/反序列化为json的问题。以前我使用GSON来做到这一点,但现在我面临一个已经依赖于Jackson的项目,如果我可以用手头已有的东西做的话,我宁愿不引入新的依赖项。想象一下我有一个这样的bean:classExampleBean{privateStringfirstField;privateStringsecondField;//respectivegettersandsetters}然后Jackson将其序列化为:{"firstField":"","secondField":""}我正在使用以下代码生成上述结果:ExampleBeanbea

java - Jackson 对象映射器将 java 映射转换为 json 维护键的顺序

我正在使用jackson.map.ObjectMapperAPI将map转换为json字符串。我正在使用writeValueAsString方法来实现这一点。我将一个根据值排序的映射传递给writeValueAsString方法。我得到的JSON字符串是根据键求出的。有没有一种方法可以使用jackson将map转换为JSON字符串而不打乱map中项目的顺序。我尝试将Feature.SORT_PROPERTIES_ALPHABETICALLY设置为false,但根据文档,它仅适用于POJO类型。实现上述行为的任何想法。 最佳答案 使用

java - Jackson TypeFactory 静态方法已弃用使用什么?

jackson的Typefactory类中有许多已弃用的方法。我是这样使用它的:publicListgetX(Classclz){ObjectMappermapper=newObjectMapper();try{StringjsonData=mapper.writeValueAsString(data);a=mapper.readValue(jsonData,TypeFactory.collectionType(List.class,clz));}catch(Exceptione){System.out.println(e.getMessage());}returna;//aisagl

java - Jackson->Jackson + HttpPost = "Invalid UTF-8 middle byte",设置 Mime 和编码

我在我的客户端中使用ApacheHTTP客户端库和Jackson。当我将JSON发送到服务器时,出现错误:org.codehaus.jackson.JsonParseException:InvalidUTF-8middlebyte0x65at[Source:HttpInputOverHTTP@22a4ac95;line:1,column:81]如果我没有设置任何header,我会收到invalidmediatype,这是有道理的。如果我使用curl和相同的header,服务器会接受它,所以我认为服务器没问题(只是巧合,它也在使用Jackson)这些是文档;我已将其硬编码为仅使用8位字符

java - 阻止 jackson 改变变量名的大小写

我在Spring中使用Jackson将我的类序列化为JSON。当我像下面的示例那样序列化一个类时,Jackson正在将某些字段的名称从CamelCase更改为小写。我知道我可以通过创建自定义(反)序列化器来解决这个问题,但我希望在全局范围内关闭它。也许通过在application.properties中设置一个属性。根据defaultJacksonnamingstrategy,这是不应该发生的:Inabsenceofaregisteredcustomstrategy,defaultJavapropertynamingstrategyisused,whichleavesfieldname

java - 当 json 包含 type 属性时,jackson 可以确定要反序列化到的根对象类型吗?

假设对json的序列化包括实际对象的类名,在类上使用此注释:@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS,include=JsonTypeInfo.As.PROPERTY,property="@type")classMyClass{Stringfoo;}所以json例如:{"@type":"com.example.MyClass","foo":"bar"}可以在不指定类型的情况下反序列化吗?我的意思是甚至不是super类型。就像这样:objectMapper.readValue(value,Object.class);这实际上不起作用,它带回了一个ma

java - 使用 Play Framework 和 Java 解析 Json 数组

我有以下Json结构:{"name":"John","surname":"Doe","languages":[{"language":"english","level":"3"},{"language":"french","level":"1"}]}我正在使用PlayFramework解析HTTP消息中的Json数据,该消息是使用自研REST服务发送的。我已经知道如何通过查看文档从Json数据中解析姓名和姓氏,这是通过以下方式完成的:JsonNodejson=request().body().asJson();Stringname=json.findPath("name").textV

java - 如何自动将String @RequestBody 解析为json

我有一个端点,它应该读取一个字符串值作为正文。@RestControllerpublicclassEndpointsController{@RequestMapping(method=RequestMethod.PUT,value="api/{myId}/name",consumes=MediaType.APPLICATION_JSON)publicStringupdateName(@PathVariable(MY_ID)StringmyId,@RequestBodyStringname){//willbe:"newname"//insteadof:newnamereturnmyId;