当前位置: 首页 > 知识库问答 >
问题:

改装或Jackson ObjectMapper将“aId”属性映射为小写的“aId”

萧元徽
2023-03-14

我正在使用Jackson 2.9.2改装2.1.0进行一些POST操作,使用JSONArray作为HTML头参数。

API定义了一个值,它是aId。无论我尝试什么,我的JSON属性总是转换为小写(aid)。

我用abId测试了我相同的代码,它可以工作...有人知道我的配置哪里错了吗?是针对这个财产名称的?

//ObjectMapper initialization
ObjectMapper().disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
          .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)


//the data class
import com.fasterxml.jackson.annotation.JsonProperty

data class MyClass(
    @JsonProperty
    val aId: String? = null, //<-- not working
    @JsonProperty
    val abId: String? = null //working!
)

//Retrofit call 
import retrofit2.http.Body

@POST("log")
fun sendLog(@Body logs: List<MyClass>): Call<MyCall>

//JSON Result in HTML Header
[{  
  "aid":"some_value",  //should be "aId"
  "abId":"some_value"  //is correct
 }]

我尝试了以下注释:

>

  • @序列化名称(“援助”)

    @JsonProperty(“援助”)

    @JsonRawValue

    @jsonAlias

  • 共有2个答案

    高砚
    2023-03-14

    有关kotlin数据类的Jackson@JsonProperty注释的使用情况,请参阅Michael Ziober发布的链接

    所述问题是由于杰克逊的默认行为不扫描私有字段造成的。使用@jsonautodect

    @JsonAutoDetect(fieldVisibility = Visibility.ANY)
    data class MyClass(
       @JsonProperty
       val aId: String? = null, 
       @JsonProperty
       val abId: String? = null 
    )
    
    秦权
    2023-03-14

    试试这个@get: JsonProperty("aId")

     类似资料:
    • 我想将map转换为json,但使用jackson更改大小写。例如,我有这个地图: 我想将其转换为 json,但从下划线大小写更改为较低的驼峰大小写。我该怎么做?使用这个没有帮助:

    • 映射类上的属性可以链接到SQL表达式,SQL表达式可用于查询。 使用杂交种 将相对简单的SQL表达式链接到类的最简单和最灵活的方法是使用一个在本节中描述的所谓的“混合属性”。 混合属性 . 混合提供了一个同时在Python和SQL表达式级别工作的表达式。例如,下面我们映射一个类 User ,包含属性 firstname 和 lastname 包括一个混合动力车 fullname ,这是两个字符串的

    • 问题内容: 通用实体,超类: pojo: 我尝试使用那些注释:@ AttributeOverride,@ Id等,但是它不起作用。你能帮助我吗?我想覆盖属性“ id”以通过pojo / table指定另一个列名和一个序列。最好的方法是什么? 问题答案: 试试这个,代替

    • 我需要将源类中的字段值映射到字段属性。我可以使用Mapstruct使用@mapper注释的'expression'参数来完成 有没有其他方法可以不使用“表达式”来进行映射?

    • 问题内容: 我有一个用于向用户提供数据的组件。例如。该组件可以调度某些方法(例如,按操作)。我目前正在使用一种方法来映射到。派遣后有办法吗? 问题答案: 据我了解,您要做的就是将组件的props转换为组件自己的状态。您总是可以像这样在组件的生命周期方法中将组件的props更改为组件的状态。 每当有新的道具进入组件时,方法总是由react执行,因此这是根据道具更新组件状态的正确位置。 更新: The

    • 问题内容: 通用实体,超类: pojo: 我尝试使用那些注释:@ AttributeOverride,@ Id等,但是它不起作用。你能帮助我吗?我想覆盖属性“ id”以通过pojo / table指定另一个列名和一个序列。最好的方法是什么? 问题答案: 试试这个,代替