Tag: jackson

如何在Jackson中为generics类型创建自定义反序列化器?

想象一下以下场景: class Foo { …. } class Bar { Foo foo; } 我想为Foo编写一个自定义Jackson解串器。 为了做到这一点(例如,为了反序列化具有Foo属性的Bar类),我需要知道在反序列化时在Bar使用的Foo的具体类型(例如,我需要知道)那个特定情况下T就是Something )。 如何编写这样的解串器? 应该可以这样做,因为jackson用类型集合和地图来做。 澄清: 似乎有2个部分来解决问题: 1)在Bar获取声明的属性类型foo并使用它来反序列化Foo 2)在反序列化时找出我们在类Bar中对属性foo进行反序列化以便成功完成步骤1) 如何完成1和2?

jackson动态属性名称

我想序列化一个对象,以便根据字段的类型对其中一个字段进行不同的命名。 例如: public class Response { private Status status; private String error; private Object data; [ getters, setters ] } 在这里,我希望将字段data序列化为类似data.getClass.getName()而不是总是有一个名为data的字段,根据情况包含不同的类型。 我如何使用Jackson实现这样的技巧?

将JSON反序列化为现有对象(Java)

我想知道如何让Jackson JSON库将JSON反序列化为现有对象? 我试图找到如何做到这一点; 但它似乎只能采取一个类并自己实例化它。 或者,如果不可能,我想知道是否有任何Java JSON反序列化库可以做到这一点。 这似乎是C#的一个相应问题:将数据从JSON字符串覆盖到现有对象实例 。 看来JSON.NET有一个PopulateObject(字符串,对象)。

jackson动态改变JsonIgnore

我有一个类,里面也有变量。 有时我想忽略一些字段,有时候不反序列化(也许在序列化时)。 我怎么能在jackson做到这一点?

使用Jackson自定义JSON反序列化

我正在使用Flickr API 。 调用flickr.test.login方法时,默认的JSON结果为: { “user”: { “id”: “21207597@N07”, “username”: { “_content”: “jamalfanaian” } }, “stat”: “ok” } 我想将此响应解析为Java对象: public class FlickrAccount { private String id; private String username; // … getter & setter … } 应该像这样映射JSON属性: “user” -> “id” ==> FlickrAccount.id “user” -> “username” -> “_content” ==> FlickrAccount.username 不幸的是,我无法使用Annotations找到一个漂亮,优雅的方法。 到目前为止,我的方法是将JSON字符串读入Map并从那里获取值。 Map value = new […]

如何使用Jackson json注释enum字段以进行反序列化

Jackson 1.6.2 REST Web服务/ Apache Wink 如何对枚举字段进行注释以便jackson对其进行反序列化? 内心阶级 public enum BooleanField { BOOLEAN_TRUE { public String value() { return “1”;} }, BOOLEAN_FALSE { public String value() { return “0”;} }, Java Bean / Request对象 BooleanField locked; public BooleanField getLocked() {return locked;} Jackson文档声明它可以通过@JsonValue / @JsonCreator完成此@JsonCreator但不提供任何示例(如何有用!)。 我敢肯定他们只是不想让太多人使用他们的框架,所以他们保守秘密。 有谁愿意溢出(java)bean,因为它是?

Spring 3.0使用jackson消息转换器进行JSON响应

我将我的messageconverter配置为jackson的 class Foo{int x; int y} 并在控制器中 @ResponseBody public Foo method(){ return new Foo(3,4) } 从那个我期望从服务器返回一个JSON字符串{x:’3’,y:’4′},没有任何其他配置。 但得到我的ajax请求的404错误响应 如果使用@ResponseBody注释该方法,则将返回类型写入响应HTTP正文。 返回值将使用HttpMessageConverters转换为声明的方法参数类型。 我错了吗 ? 或者我应该使用序列化程序将我的响应对象转换为Json字符串,然后将该字符串作为响应返回。(我可以正确地进行字符串响应)或者我应该进行其他配置吗? 比如为Foo类添加注释 这是我的conf.xml

JSON到JSON转换器

我有一个场景。 所需的输入和输出是JSON。 // Input { “OldObject”: { “Time”: 1351160457922, “Name”: “OName”, “quantity”: 100, “price”: 10 } } // Output { “NewObject”: { “Time”: 1351160457922, “Title”: “OName”, “quantity”: 100 } } 我需要一些转换代码或最好是xslt类型的语言来将json从一种格式转换为另一种格式。 这个变压器也需要快速,因为转换将在运行中完成。 编辑 我没有接收到的INPUT对象的定义,它可能在运行时更改。 但如果需要,我可以使用OUTPUT对象的类。 我试图以json – > xml – > xslt – > xml – > json的方式执行此操作 ,但此时每秒接收大约1000个对象,此过程可能会产生开销。 我也不能使用JavaScript,因为myApp是基于Windows的简单java应用程序 ,使用JavaScript可能会导致开销。

Java:Jackson具有接口属性的多态JSON反序列化对象?

我正在使用Jackson的ObjectMapper来反序列化包含接口作为其属性之一的对象的JSON表示。 这里可以看到代码的简化版本: https://gist.github.com/sscovil/8735923 基本上,我有一个具有两个属性的类Asset : type和properties 。 JSON模型如下所示: { “type”: “document”, “properties”: { “source”: “foo”, “proxy”: “bar” } } properties属性被定义为一个名为AssetProperties的接口,我有几个实现它的类(例如DocumentAssetProperties , ImageAssetProperties )。 这个想法是图像文件具有与文档文件等不同的属性(高度,宽度)。 我已经完成了本文中的示例,阅读了有关SO及更高版本的文档和问题,并在@JsonTypeInfo注释参数中尝试了不同的配置,但未能破解这个问题。 任何帮助将不胜感激。 最近,我得到的例外是: java.lang.AssertionError: Could not deserialize JSON. … Caused by: org.codehaus.jackson.map.JsonMappingException: Could not resolve type id ‘source’ into a subtype of [simple type, class AssetProperties] 提前致谢! 解: 非常感谢@MichałZiober,我能够解决这个问题。 我还能够使用Enum作为类型ID,这需要一些谷歌搜索。 这是一个带有工作代码的更新Gist: […]

如何仅使用Jackson将XML转换为JSON?

我从服务器获得XML响应。 但我需要以JSON格式显示它。 有没有办法在没有任何第三方API的情况下进行转换? 我用过jackson,但为此我需要创建POJO。 服务器的响应是这样的: 400The field ‘quantity’ is invalid.The quantity specified is greater than the quantity of the product that is available to ship.012525