Java Jackson批注无法分析布尔字段
我的数据对应的Java类如下:Java Jackson批注无法分析布尔字段,java,jackson,jackson-databind,Java,Jackson,Jackson Databind,我的数据对应的Java类如下: package com.some.package; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.gson.reflect.TypeToken; import lombok.AllArgsConstructor; import lombok.B
package com.some.package;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.gson.reflect.TypeToken;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.lang.reflect.Type;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class A {
public static final Type UNMARSHALLER_TYPE = new TypeToken<A>(){}.getType();
@JsonProperty("id")
String id;
@JsonProperty("name")
String name;
@JsonProperty("is_enabled")
boolean isEnabled;
}
看起来jackson data binder无法解析测试中传递的json字符串。有没有可能我做错了什么?
任何帮助或指导都将不胜感激。问题是您混合了两个不同的库
jackson
和Gson
,它们属于jackson
,您正在尝试在测试用例中使用解析
使用Gson:您可以在使用Gson时使用,您可以找到有关Gson的更多信息
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class A {
public static final Type UNMARSHALLER_TYPE = new TypeToken<A>(){}.getType();
@SerializedName("id")
String id;
@SerializedName("name")
String name;
@SerializedName("is_enabled")
boolean isEnabled;
}
实际上,测试用例并不是我真正的问题。实现的逻辑也无法解析。现在我看到它已经从gson解析出来了。非常感谢,我需要学习更多关于这些。
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class A {
public static final Type UNMARSHALLER_TYPE = new TypeToken<A>(){}.getType();
@SerializedName("id")
String id;
@SerializedName("name")
String name;
@SerializedName("is_enabled")
boolean isEnabled;
}
@Test
public void testAUnmarshaller() throws IOException {
// given
ObjectMapper objectMapper = new ObjectMapper();
PapiSite payload = objectMapper.readValue(RESPONSE_JSON, A.class);
// then
assertNotNull(payload);
assertTrue(payload.isEnabled());
assertEquals("XXX", payload.getName());
}