Tag: jackson

jackson-dataformat-csv不会忽略未知属性

尝试使用jackson-dataformat-csv解析.csv文件。 文件包含很多与我的程序无关的列。 试图对我的数据类使用@JsonIgnoreProperties(ignoreUnknown = true)和csvMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES),但都不起作用,应用程序抛出异常: com.fasterxml.jackson.databind.RuntimeJsonMappingException: Too many entries: expected at most 2 (value #2 (17 chars) "policy_issue_date") at [Source: (com.fasterxml.jackson.dataformat.csv.impl.UTF8Reader); line: 1, column: 37] at com.fasterxml.jackson.databind.MappingIterator.next(MappingIterator.java:194) at pl.polins.readers.oc.OcPolicyCsvReader.readNext(OcPolicyCsvReader.kt:25) at pl.polins.readers.oc.OcPolicyCsvReaderTest.should read PolicyCsv from .csv file(OcPolicyCsvReaderTest.groovy:19) Caused by: com.fasterxml.jackson.dataformat.csv.CsvMappingException: Too many entries: expected at most 2 (value #2 (17 chars) "policy_issue_date") at [Source: (com.fasterxml.jackson.dataformat.csv.impl.UTF8Reader); line: […]

自定义反序列化器在杰克逊的任何名单

我有一个列表中的错误对象的问题。 例如我有一个JSON模型: { "items": [ { "id": 1, "name": "Item1" }, { "id": 2, "name": "Item2" }, { "id": [], "name": "Item3" } ] } 和两个POJO data class BadList(val items: List<BadItem>) data class BadItem(val id: Int, val name: String) 当然,当解析器绊倒第三个元素时,我会得到异常 com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.Integer out of START_ARRAY token at [Source: {"items":[{"id":1,"name":"Item1"},{"id":2,"name":"Item2"},{"id":[],"name":"Item3"}]}; line: […]

使用Retrofit2 + RxJava + Jackson重试202状态码

我有一个API,根据不同的场景返回200,202,4xx。 当我得到一个202,我应该做相同的API,直到我得到一个200或4xx。 我尝试使用doOnErrorNext,onError,onNext。 我无法解决这个问题 Observable<MyPOJO> makeAPI(); Observable<MyPOJO> makeAPIImpl(){ makeAPI().doOnErrorNext(/*how to I access the error code here*/); makeAPI().doOnNext(/*given that 202 is a success code, I expected it to come here, but it goes to Error because of JSON Mapping*/); } doOnErrorNext – >我能够再次进行API调用,但它会发生所有我不想要的错误情况 我已经检查了多个关于这个问题的答案,但是没有人专门解决这个问题,并且无法在我的用例中加入其他答案。

JsonProperty不能在缩小时启用

我有以下班级 class CodeRequest(@JsonProperty("phone") val phoneNumber: String) 当我发送请求(使用改进)与这个类的对象作为正文(而缩小未启用)时,一切正常和请求将以这种形式发送{"phone": "123"} 但使用以下proguard-rules.pro启用缩小将导致{"phoneNumber": "123"}请求正文。 # Jackson -keep class com.fasterxml.jackson.databind.ObjectMapper { public <methods>; protected <methods>; } -keep class com.fasterxml.jackson.databind.ObjectWriter { public ** writeValueAsString(**); } -keep @com.fasterxml.jackson.annotation.* class * { *; } -keep @com.fasterxml.jackson.annotation.** class * { *; } -keep class com.fasterxml.** { *; } -keepattributes *Annotation*,EnclosingMethod,Signature,Exceptions,InnerClasses -keep class * { […]

Kotlin数据类到JSON与春天/杰克逊

我试图公开一些数据类作为JSON对象,但有些不工作。 我有以下数据类: data class Link( @JsonProperty("rel") @JsonView(View.Bind::class) val rel: String, @JsonProperty("method") @JsonView(View.Bind::class) val method: HttpMethod, @JsonProperty("href") @JsonView(View.Bind::class) val href: String) data class MetaData(val status: HttpStatus) { @JsonView(View.Bind::class) @JsonProperty("status_code") fun getStatusCode(): Int { return status.value() } @JsonView(View.Bind::class) @JsonProperty("status_desc") fun getStatusDesc(): String { return status.name } } data class Payload( @JsonView(View.Bind::class) @JsonProperty("payload") val payload: Any, @JsonProperty("_meta") @JsonView(View.Bind::class) […]

你如何声明一个使用Jackson XML的JsonTypeInfo.As.WRAPPER_OBJECT的多态字段?

我在一个用Kotlin编写的Android应用程序中接收XML消息,我试图弄清楚如何在不是根节点时使用Jackson的多态反序列化。 这是一个简单的例子。 假设我收到两种类型的消息(“数据”消息和“文本”消息): <MSG> <TT> <id>3</id> <text>hi</text> </TT> </MSG> <MSG> <DT> <id>4</id> <data>93328afd0</data> </DT> </MSG> 消息由它们的包装元素来区分,所以我设置了一些sealed class声明: @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT) @JsonSubTypes( JsonSubTypes.Type(name = "TT", value = MT.TT::class), JsonSubTypes.Type(name = "DT", value = MT.DT::class)) sealed class MT { data class TT( val id: Int, val text: String ) : MT() data class DT( […]

覆盖一些控制器的@JsonIgnore注释。 杰克逊。 弹簧

我只需要将照片字段仅用于直接请求到实体。 但是,当用户向所有MediaHolders对象发出请求时,仅使用photoSize序列化短信息。 我正在使用Kotlin,Jackson,Spring和Hibernate。 我试过了: 在控制器上的@JsonView。 不起作用。 JsonView不覆盖@JsonIgnore的行为。 或者我需要注释基本PersonalDomainObject类和所有控制器中的所有字段,这是不适合我。 自定义JsonFilter,但相同,它不会看到忽略字段。 而且我不能在不同的控制器上添加不同的过滤器。 也许我错过了一些东西,但我认为这是优化中的常见任务。 非常感谢您的任何建议! @JsonIgnoreProperties("createdAt", "updatedAt", "owner", "hibernateLazyInitializer", "handler") open class MediaHolder : PersonalDomainObject() { @OneToMany(cascade = arrayOf(CascadeType.PERSIST, CascadeType.REMOVE), mappedBy = "mediaHolder") @LazyCollection(LazyCollectionOption.EXTRA) var photos:MutableList<Photo> = mutableListOf() val photosSize: Int get() = photos.size }

如何防止杰克逊(德)序列化某些属性?

对于任何Kotlin类,以componentX()的格式为每个公共属性生成一个方法,所以这个类: public data class Dog(public var name: String, public var age: Double) 在Java中相当于这样的东西: public class Dog { private String name; private double age; public Dog(@NotNull String name, @NotNull double age) { // assign values } // Getters and setters for name and age // toString(), equals(), and hashCode() public String component1() { return name; } […]

在Kotlin中,FasterXML / jackson循环引用,@JsonIdentityInfo和UnresolvedForwardReference异常

我试图使用这个库和 compile group: 'com.fasterxml.jackson.module', name: 'jackson-module-kotlin', version: '2.8.5' 我有类结构这样的点击和代码 fun main(args: Array<String>) { test() } fun test(){ val mapper = jacksonObjectMapper() val entity2 = Entity2("test_entity2") val entity1 = Entity1("test_entity1") val rootEntity1 = Entity1("root_entity1") entity2.entity1 = rootEntity1 entity1.parent = rootEntity1 entity1.entity2 = entity2 rootEntity1.entity2 = entity2 val json = mapper.writeValueAsString(entity1) println(json) val result = mapper.readValue(json, Entity1::class.java) […]

Jackson与Kotlin混合

我正在尝试使用Jackson mixin忽略外部Kotlin数据类的属性,但到目前为止,它并不适用于我。 这是我的SimpleModule扩展名: class BarModule : SimpleModule() { override fun setupModule(context: SetupContext?) { context?.setMixInAnnotations(Bar::class.java, BarMixin::class.java) } } 这是我的混合: abstract class BarMixin { @JsonIgnore val totalValue: Double = 0.0 } 我最初尝试@JsonIgnore val totalValue:双,但它不会接受。 这是我的班级: data class Bar( val a: String, val b: Boolean = false, val c: Boolean = false, val d: Array<Block> ) { val […]