为什么Java会在JSON响应中截断前面的内容?
我有一个spring rest API,它从如下所示的响应类返回JSON响应:为什么Java会在JSON响应中截断前面的内容?,java,json,spring-boot,Java,Json,Spring Boot,我有一个spring rest API,它从如下所示的响应类返回JSON响应: public class myResponse { private String anyString; private boolean isBoolean; //getters and setters } 我希望JSON响应是: { "anyString" : "foo", "isBoolean" : true } 但是,每当我检查浏览器以获得响应时,我都会得到: { "anyString" : "foo",
public class myResponse {
private String anyString;
private boolean isBoolean;
//getters and setters
}
我希望JSON响应是:
{
"anyString" : "foo",
"isBoolean" : true
}
但是,每当我检查浏览器以获得响应时,我都会得到:
{
"anyString" : "foo",
"boolean" : true
}
为什么前面的“is”被截断了?如果您使用的是Spring Boot,那么它在内部某处使用Jackson将您的对象转换为json字符串 您可以深入研究ObjectMapper类的逻辑,但其思想是访问字段并获得结果命名
因此,对于名为“isSth”(via method object.isSth())的布尔属性,它实际上表示json的一个字段“sth”。如果您想严格地在json中设置字段的名称,请使用@JsonProperty annotationjava和javascript以及其他内容。确保标题和标签相符。最有可能的是
isBoolean
的getter,也称为isBoolean()
。这意味着反序列化响应的任何库都会将属性名推断为“boolean”,因为这是每个JavaBeans约定的默认值。如果需要不同的行为,则需要限定属性名称。由于没有提供关于这个案例的更多信息,我无法提供更多细节。isBoolean的getter的名称和访问权限是什么(即它们是公共的)?您需要告诉我们哪个库实际执行转换。不是语言本身起作用,JSON没有内置到Java中。@JGFMK访问修饰符是isBoolean()和setIsBoolean(boolean b)