Tag: jackson

区分Jersey,Jackson和JaxB API

嗨:我一直在内部使用Jackson进行JSON处理,我想将这些对象作为Jsons提供给外部API(REST)(现在,它们作为java对象存储在内部)。 显而易见的实现是编写某种查询引擎来读取请求,从底层数据存储中检索对象,然后使用Jackson将它们序列化为Jsons。 然而,我开始意识到已经有一些API已经可以用于组装这样的Web服务,它们处理了许多平凡的细节(安全性,查询解析,REST协调)。 例如,似乎可以使用泽西注释来定义REST服务…. 所以我的问题是:基于Java EE JSON的Web服务的最新技术是什么,以及这些服务用作数据存储的内容(即Plaintext?RDBMS?对象数据服务?) 最重要的是…… xml和json数据映射的不同apis之间的function差异是什么,即jersey / Jackson / JaxB?

jacksonJSON,不可变类和接口

我正在使用Jackson示例,并且在使用不可变类和接口进行反序列化时遇到一些麻烦。 以下是我的代码: package com.art.starter.jackson_starter; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; /** * Hello world! * */ public class App { public static void main( String[] args ) throws JsonGenerationException, JsonMappingException, IOException { System.out.println( “Hello World!” ); AddressImpl.AddressBuilder builder = new AddressImpl.AddressBuilder(); NameImpl.Builder nameBuilder = new NameImpl.Builder(); UserImpl.Builder userBuilder = […]

基于Enum的Jackson多态反序列化

我正在使用JacksonPolymorphicDeserialization ,这是我的代码,它反序列化为基于’type’属性的正确类: @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = “type”, defaultImpl = Event.class, visible = true) @JsonSubTypes({ @Type(value = SpecialEvent1.class, name = “SPECIAL_EVENT_1”), @Type(value = SpecialEvent2.class, name = “SPECIAL_EVENT_2”), }) public abstract class AbstractEvent { private String type; public String getType() { return type; } public void setType(String type) { this.type = type; […]

Jackson的不可变/多态POJO JSON序列化

我正在尝试使用Jackson 2.1.4将不可变的POJO与JSON序列化,而不必编写自定义序列化程序并尽可能少注释。 我还想避免为了满足Jackson库而添加不必要的getter或默认构造函数。 我现在坚持exception: JsonMappingException:找不到类型[simple type,class Circle]的合适构造函数:无法从JSON对象实例化(需要添加/启用类型信息?) 代码: public abstract class Shape {} public class Circle extends Shape { public final int radius; // Immutable – no getter needed public Circle(int radius) { this.radius = radius; } } public class Rectangle extends Shape { public final int w; // Immutable – no getter needed public […]

当HTTP请求具有返回状态401时,如何在Java中解析响应主体

我正在使用Spring的RestTemplate和Jackson来使用RESTful JSON API。 在某些情况下,我们可能会收到一个Status 401 (未授权)响应,其中包含由API制造商定义的自定义JSON主体,如下所示: { “code”: 123, “message”: “Reason for the error” } 我们需要解析主体,并在业务逻辑中使用code属性。 这是我们需要解析的错误响应Java对象: public class CustomError { @JsonProperty private Integer code; @JsonProperty private String message; public Integer getCode() { return code; } public String getMessage() { return message; } } 以及一个自定义error handling程序: public class CustomErrorHandler extends DefaultResponseErrorHandler { private RestTemplate restTemplate; […]

jackson – 反序列化一个基础枚举

是否可以反序列化具有一个索引的枚举? enum Status { Active, Inactive } {status:1}表示Status.Active,但Jackson使其成为Status.Inactive 🙁

jackson – 由于构造函数导致的JsonMappingException

尝试反序列化JSON时,我遇到以下exception 没有为类型[simple type, class MyObj$obj$Card]:找到合适的构造函数[simple type, class MyObj$obj$Card]:无法在[Source: java.io.StringReader@4344ee21; line: 1, column: 201]来自JSON对象(需要添加/启用类型信息?)实例化) [Source: java.io.StringReader@4344ee21; line: 1, column: 201] (通过参考链: MyObj[“obj”]->Obj[“cards”] ) JSON就是 { “obj”:{ “api”:”OK”, “cache”:false, “cards”:[ { “id”:1232995897, “items”:[ { “id”:”vmdSJLpnY”, “cat”:50, “rating”:0.0 } ] }, { “id”:0005897, “items”:[ { “id”:”vxdSJLpnY”, “cat”:50, “rating”:0.0 } ] } ] } } 在Obj课程中,我有以下声明 @JsonProperty(“cards”) private Card[] […]

如何使用Camel和Jackson库将嵌套的键,值对编组到JSON中?

我有一个Java项目,它当前将一个映射返回给Camel,没有任何嵌套的键,值对,并且Jackson库使用Jackson库将它编组到JSON中。 例如,如果我将以下两个键值放入demoMap中: Map demoMap = new TreeMap demoMap.put(“key1″,”5”); demoMap.put(“key2″,”10”); 我得到以下JSON: {“key1″:”5″,”key2″:”10”} 但是,现在我的一些键值条目将具有可选的可见性,我需要将其作为嵌套键值放在我的地图中。 任何没有可选可见性的键值都将使用默认值。 所以,例如,如果我为key1和key2指定了可见性,而不是key3,我希望得到JSON,如下所示: {“key1″:”5”, “key2″:”10”, “key3″:”17”, “visibility” : { “key1”: “a&b&!c”, “key2”: “a&b”, “_default”: “a” } } 如何让Camel使用嵌套键,值对来编组Java对象? 我是一个视觉学习者,所以一个简单的例子会有所帮助。 我尝试更改我的Map以将值作为对象,即: Map demoMap = new TreeMap 然后尝试使用http://examples.javacodegeeks.com/core-java/json/jackson/convert-java-map-to-from-json-using-jackson-example为ArrayList添加一些键的嵌套键值/供参考,但意识到这只是给了我一堆键下的嵌套值,而不是一堆嵌套键,值对。 即使我尝试使用grins,我也遇到了一个来自Camel处理器的错误,其中包含java.lang.ClassCastException,声明java.util.ArrayList无法转换为java.lang.String 同样,当我尝试在我的demoMap中嵌套Map时,我得到了这个ClassCastException: 3244 [hello.world.request.timer] ERROR org.apache.camel.processor.DefaultErrorHandler – Failed delivery for exchangeId: e6518e39-89b7-435e-96d9-ce26811ac67e. Exhausted after delivery attempt: 1 caught: […]

在Spring MVC 4.0中自动转换JSON表单参数

我正在尝试构建一个Spring MVC控制器,它将接收带有JSON格式参数的POSTed表单,并让Spring自动将其转换为Java对象。 请求内容类型是application/x-www-form-urlencoded 包含JSON字符串的参数的名称是data.json 这是控制器: @Controller public class MyController { @RequestMapping(value = “/formHandler”, method = RequestMethod.POST) public @ResponseBody String handleSubscription( @RequestParam(“data.json”) MyMessage msg) { logger.debug(“id: ” + msg.getId()); return “OK”; } } 这就是MyMessage对象的样子: public class MyMessage { private String id; // Getter/setter omitted for brevity } 也许并不奇怪,发布带有参数data.json = {“id”:“Hello”}的表单会导致HTTP错误500,并出现此exception: org.springframework.beans.ConversionNotSupportedException: Failed to convert value of […]

为什么jackson用一个以课程命名的额外层来包裹我的对象?

当我序列化 public class FOO { int field1; String field2; } 我得到了以下内容。 {“FOO”:{“field1″:0,”field2″:”value”}} 你能指点我怎么能让输出看起来像这样 {“field1″:0,”field2″:”value”}