杰克逊无法识别的字段 [英] jackson Unrecognized field
问题描述
我使用jackson将JSON转换为Object类.
I use jackson for converting JSON to Object class.
JSON:
{
"aaa":"111",
"bbb":"222",
"ccc":"333"
}
对象类:
class Test{
public String aaa;
public String bbb;
}
代码:
ObjectMapper mapper = new ObjectMapper();
Object obj = mapper.readValue(content, valueType);
我的代码抛出这样的异常:
My code throws exception like that:
org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "cccc" (Class com.isoftstone.banggo.net.result.GetGoodsInfoResult), not marked as ignorable
我不想在Test类上添加道具,我只是想让jackson转换Test中也存在的存在值.
And I don't want to add a prop to class Test,I just want jackson convert the exist value whith is also exist in Test.
推荐答案
Jackson提供了几种不同的机制来配置对额外" JSON元素的处理.以下是将ObjectMapper
设置为非FAIL_ON_UNKNOWN_PROPERTIES
的示例.
Jackson provides a few different mechanisms to configure handling of "extra" JSON elements. Following is an example of configuring the ObjectMapper
to not FAIL_ON_UNKNOWN_PROPERTIES
.
import org.codehaus.jackson.annotate.JsonAutoDetect.Visibility;
import org.codehaus.jackson.annotate.JsonMethod;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
public class JacksonFoo
{
public static void main(String[] args) throws Exception
{
// { "aaa":"111", "bbb":"222", "ccc":"333" }
String jsonInput = "{ \"aaa\":\"111\",
\"bbb\":\"222\",
\"ccc\":\"333\" }";
ObjectMapper mapper = new ObjectMapper().setVisibility(JsonMethod.FIELD,
Visibility.ANY);
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,
false);
Test test = mapper.readValue(jsonInput, Test.class);
}
}
class Test
{
String aaa;
String bbb;
}
有关其他方法,请参见> http://wiki.fasterxml.com/JacksonHowToIgnoreUnknown
For other approaches, see http://wiki.fasterxml.com/JacksonHowToIgnoreUnknown
这篇关于杰克逊无法识别的字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!