Java 当字段名和/或值包含空格前导/尾随时,如何使用jackson反序列化JSON字符串

Java 当字段名和/或值包含空格前导/尾随时,如何使用jackson反序列化JSON字符串,java,spring-boot,jackson,Java,Spring Boot,Jackson,输入json: {"id ": " 1"} 定义的java类: class ID { String id; } 如何正确获取ID对象的“ID=1”而不是“ID=null”您可以使用如下注释: class ID { @JsonProperty("id ") String id; public String getId() { return id; } } 然后: String id = myIdClassInstance

输入json:

{"id   ": "   1"}
定义的java类:

class ID {
    String id;
}

如何正确获取ID对象的“ID=1”而不是“ID=null”

您可以使用如下注释:

class ID {

    @JsonProperty("id   ")
    String id;

    public String getId() {
        return id;
    }
}
然后:

String id = myIdClassInstance.getId().trim();
但这只适用于空间数量固定的情况

此外,您只能以明确定义的名称访问对象的字段


如果您确实希望
“id”
“id”
指向同一字段,则需要在发送之前手动格式化JSON。

id周围的空格数是否始终相同?否,这取决于用户输入键
id
的最佳方式是
trim()
前端应用程序中的用户输入。至于值
1
,您可以在控制器中对其进行修剪。Hi@Kartik,输入来自其他人的java代码,我的代码由于某种原因无法中继到其他人的代码。因此没有前端。目前,我能做的唯一解决方案是将输入作为映射接收,格式化映射中的每个元素,然后将它们转换为我的对象。但它并不优雅,我认为空间的数量不是固定的。我在spring引导控制器方法的一个对象参数上使用@RequestBody注释。那么,如何手动格式化输入?感谢you@Alex,您在发送之前使用JavaScript生成JSON,对吗?您可以这样做:
{[idName]:idValue,…}
,其中
varidname='id'.trim();var idValue='1'.trim()
Hi Artiow,输入来自其他人的java代码,出于某种原因,我的代码无法依赖于其他人的代码您救了我的命谢谢我亲爱的Artiow