Tag: jackson

使用Jackson来(De) – 将Scala案例类序列化

我使用Jackson测试了Scala案例类的序列化。 DeserializeTest.java public static void main(String[] args) throws Exception { // being lazy to catch-all final ObjectMapper mapper = new ObjectMapper(); final ByteArrayOutputStream stream = new ByteArrayOutputStream(); mapper.writeValue(stream, p.Foo.personInstance()); System.out.println(“result:” + stream.toString()); } } Foo.scala object Foo { case class Person(name: String, age: Int, hobbies: Option[String]) val personInstance = Person(“foo”, 555, Some(“things”)) val PERSON_JSON = […]

Spring MVC中的流JSON输出

我的应用程序是使用Spring boot(1.3.3.RELEASE)和spring mvc,spring data jpa hibernate构建的。 MySql是数据库,Jackson是Json序列化器。 在java 8上。 我想在我的控制器方法中返回一个庞大的数据集。 我想要返回如下所示的对象流,而不是检索所有数据然后传入jackson序列化器。 @RequestMapping(value = “/candidates/all”, method = RequestMethod.GET) public Stream getAllCandidates(){ try { return candidateDao.findAllByCustomQueryAndStream(); } catch(Exception e){ LOG.error(“Exception in getCandidates”,e); } return null; } 我的DAO如下: @Query(“select c from Candidate c”) public Stream findAllByCustomQueryAndStream(); 但是,Jackson正在序列化流对象而不是流的内容。 实际输出如下: {“parallel” : false} 如何指示Jackson序列化内容而不是流对象?

如何@autowire一些bean进入JsonSerializer?

我在我的网络应用程序中使用延迟加载与hibernate。 我想在服务器响应的解析阶段从数据库加载一些对象 @Component public class DesignSerializer extends JsonSerializer { @Autowired IDesignService designService; <– is null } 这是完全可以理解的,因为DesignSerializer正在使用每个对象的“new”运算符进行实例化。 我确信有一种方法可以在创建时将bean注入该序列化程序,我只是不知道如何。 你们能帮助我或指出我正确的方向吗?

Jackson:将枚举值序列化和反序列化为整数

考虑以下枚举和类: public enum State { ON, OFF, UNKNOWN } public class Machine { String name; int numCores; State state; public Machine(String name, int numCores, State state) { this.name = name; this.numCores = numCores; this.state = state; } } 并考虑以下主要function: public static void main(String args[]) { Machine m = new Machine(“Machine 1”, 8, OFF); ObjectMapper mapper […]

Jax-rs json相当不错

在Java中我使用的时候 @Produces(“application/json”) 注释输出不会形成人类可读的forms。 我怎么做到这一点?

jackson反序列化error handling

我的问题很简单:我有以下简单的类: public class Foo { private int id = -1; public void setId(int _id){ this.id = _id; } public int getId(){ return this.id; } } 我正在尝试处理以下JSON: { “id”: “blah” } 显然,这里有一个问题(“blah”无法解析为int) 以前,Jackson会抛出类似org.codehaus.jackson.map.JsonMappingException的东西:无法从String值’blah’构造java.lang.Integer的实例:不是有效的Integer值 我同意这一点,但我想在某处注册一些允许忽略这种映射错误的东西。 我尝试使用注册的DeserializationProblemHandler(参见此处 ),但它似乎只适用于未知属性而不是反序列化问题。 你对这个问题有什么线索吗?

jackson对多种类型的反序列化

我有一个名为Instance的抽象类,然后是UserInstance和HardwareInstance两个实现。 我遇到的问题是,当我将@POST的其余端点调用到数据库中时,我理想地希望它像…/rest/soexample/instance/create将实例传递给REST端点。 如果Instance不具有多个实现的抽象,那就没问题,但是因为我有2个,所以我得到了一个Jackson.databind错误。 “问题:抽象类型需要映射到具体类型,具有自定义反序列化器,或者使用其他类型信息进行实例化” 在找到解决方案之后,我找到了一个SO答案,说我可以使用类似的东西: @JsonDeserialize(as=UserInstance.class) 但是,如果有一个抽象类的实现,它似乎是非常有用的。 假设我不能两次调用它,因为它无法确定它将是哪种类型的实例。 所以我想知道处理这种情况的最佳方法是什么? 我应该创建不同的端点吗? 喜欢: …/rest/soexample/userinstance/create & …/rest/soexample/hardwareinstance/create 我不太确定,因为我是一个noobie @ REST相关的东西,虽然积极尝试学习。 谢谢!

为什么jackson2不承认第一个大写字母,如果领先的骆驼案例字只有一个字母长?

我正在使用Spring 4 MVC和Jackson 2进行我的服务。 对于其中一个操作,我有一个请求对象,该对象具有一个属性,其中前导驼峰字的长度只有一个字母: private String aLogId; 这个类有适当命名的getter和setter: public String getALogId() { return aLogId; } public void setALogId(String aLogId) { this.aLogId = aLogId; } 但是,当我尝试使用相应的JSON属性向此服务发布请求时: {“aLogId”:”This is a log id”} 我收到Spring框架的500响应,说该字段无法识别,我的控制器类永远不会被调用: 无法读取JSON:无法识别的字段“aLogId”(类 但是,当我将“L”更改为小写时,请求按预期反序列化并且我的控制器类被命中: {“alogId”:”This is a log id”} 为什么jackson期望“L”是小写的,因为它显然是该属性的驼峰案例约定中的第二个单词并且意图是大写的? 是因为第一个单词只有一个字母长吗? 请求对象中还有其他属性,其中第一个单词不止一个字母,并且那些属性不会遇到同样的问题,并且情况不匹配。

JSON,泽西岛和jackson的多态性

Jackson和Jersey支持多态类而不是JSON吗? 比如说,我有一个Parent类和一个inheritance它的Child类。 而且,假设我想使用JSON通过HTTP发送和接收父和子。 public class Parent { … } public class Child extends Parent { … } 我考虑过这种实现: @Consumes({ “application/json” }) // This method supposed to get a parent, enhance it and return it back public @ResponseBody Parent enhance(@RequestBody Parent parent) { … } 问题:如果我给这个函数(当然是通过JSON)一个Child对象,它会起作用吗? 孩子的额外会员字段也会被序列化吗? 基本上,我想知道这些框架是否支持多态消费和响应。 顺便说一下,我正在使用Spring MVC。

将jpa实体转换为宁静资源的好策略是什么?

Restful资源并不总是与您的jpa实体进行一对一映射。 我认为有一些问题,我试图弄清楚如何处理: 当资源具有由多个实体填充和保存的信息时。 当实体中有更多信息要作为资源发送时。 我可以使用Jackson的@JsonIgnore但我仍然会遇到问题1,3和4。 当实体(如聚合根)具有嵌套实体并且您希望包含其嵌套实体的一部分但仅包含某个级别的嵌套作为您的资源时。 当你想要将一个实体的一部分排除在一个父实体的一部分时,但当它的一部分是另一个父实体时排除一个单独的部分。 Blasted循环引用(我使用Jackson的@JsonIdentityInfo主要使用@JsonIdentityInfo ) 可能的解决方案:我能想到的唯一方法是处理所有这些问题,就是创建一大堆“资源”类,这些类将具有构造函数,这些构造函数需要实体来构建资源并为此放置必要的getter和setter。资源就可以了。 这有点矫枉过正吗? 为了解决2,3,4和5,我可以在实际实体上进行一些前后处理,然后再将它发送给Jackson,将我的pojo序列化或反序列化为JSON,但这并不能解决问题1。 这些都是我认为其他人会遇到的问题,我很好奇其他人提出的解决方案。 (我目前正在使用JPA 2,Spring MVC,Jackson和Spring-Data,但对其他技术开放)