调用方法
ObjectMapper mapper = new ObjectMapper(); // mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); try { String json = mapper.writeValueAsString(new A()); System.out.println(json); } catch (JsonGenerationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JsonMappingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
类:
class A implements Serializable{ public Integer a; public Integer B; /** * @return the a */ public Integer getA() { return a; } /** * @param a the a to set */ public void setA(Integer a) { this.a = a; } /** * @return the b */ public Integer getB() { return B; } /** * @param b the b to set */ public void setB(Integer b) { B = b; } }
产生json串: 可以看出这里多了一个b字段。
{"a":null,"B":null,"b":null}
归根溯源的debug了十几层调用(jackson真心复杂过度了),定位到这个地方:
org.codehaus.jackson.map.introspect.POJOPropertiesCollector._addMethods()
其原理是反射访问class, 1获取可访问的public字段。2.获取get/set方法,并根据最低级的常理来推断出字段。
常理是什么? getField()方法,对应field字段。 这里也就是出现b字段的根源。
这框架是springmvc集成的,返回json对象非常方便,所以在定义页面对象po的时候,还是要小心的变量命名, 小写开头。
相关推荐
Jackson库的`jackson-databind`模块扩展了`jackson-core`,提供了映射Java对象到JSON和反之的能力。它支持多种数据绑定特性,如注解驱动的映射、类型安全的集合和Map转换、以及自定义序列化和反序列化逻辑。 在毕业...
2. **jackson-databind**: 这是Jackson库的核心部分,提供了基于注解的映射机制,使JSON数据可以自动映射到Java对象,反之亦然。通过`@JsonProperty`等注解,开发者可以指定哪些字段应该被序列化或反序列化。此外,`...
`jackson-databind`是Jackson最核心且功能最强大的模块,它基于`jackson-core`和`jackson-annotations`,实现了自动将Java对象转换为JSON,以及将JSON数据还原为Java对象的功能。它通过 ObjectMapper 类来实现这一...
2. **Jackson-databind**:这个模块实现了基于注解的映射功能,使得Jackson可以将JSON数据自动绑定到Java对象,反之亦然。`ObjectMapper`是这个模块的核心类,它负责实际的序列化和反序列化工作。 3. **Jackson-...
1. `fasterxml.jackson.databind`模块:用于对象到JSON和JSON到对象的映射,这是Jackson最常用的部分,通过`ObjectMapper`类实现。 2. `fasterxml.jackson.core`模块:提供了基本的JSON解析器和生成器,如`...
`jackson-databind-2.6.0.jar` 包含了主要的映射功能,允许将Java对象绑定到JSON内容。它实现了`ObjectMapper`,这是一个关键组件,可以将任何Java对象转换为JSON字符串,反之亦然。`ObjectMapper`提供了丰富的API...
2. **jackson-databind-2.11.0.jar**:这是Jackson最核心的模块,扩展了`jackson-core`,提供了基于Java Bean的映射功能,使得JSON与Java对象之间的映射变得简单。通过`ObjectMapper`类,你可以方便地将Java对象序列...
- `jackson-databind`:这是Jackson框架的主要部分,它提供了一种高效、灵活的方式来映射JSON到Java对象,反之亦然。通过`ObjectMapper`类,你可以轻松地实现序列化和反序列化操作。 - `jackson-annotations`:这...
2. **jackson-databind**: 这是Jackson库的核心功能模块,提供了将JSON数据映射到Java对象(以及反之)的能力。`ObjectMapper`是这个模块的主要类,它可以将JSON字符串转化为Java对象,也可以将Java对象转化为JSON...
1. **解析JSON**:将JSON字符串转换为Java对象,例如从网络响应中解析出数据模型。 2. **生成JSON**:将Java对象转换为JSON格式的字符串,便于发送到服务器或存储。 3. **流式处理**:对于大量数据,提供流式API来...
6. **数据绑定**:Jackson的数据绑定功能允许Java对象直接映射到JSON结构,反之亦然。通过`@JsonProperty`和`@JsonCreator`等注解,可以控制哪些字段参与序列化和反序列化,以及如何创建对象实例。 7. **类型转换**...
`jackson-databind`是主要的使用部分,提供对象到JSON和JSON到对象的映射功能;`jackson-core`提供了基本的流式解析和生成API;`jackson-annotations`是一系列用于定制序列化和反序列化的注解。 2. **序列化与反...
`ObjectMapper`是Jackson中的另一个重要抽象,它提供了一种便利的方式来映射Java对象到JSON和从JSON反序列化回Java对象。`ObjectMapper`支持多种高级功能,如类型转换、注解处理、日期格式化等,极大地简化了JSON与...
Jackson库主要包含四个核心模块:`jackson-core`、`jackson-databind`、`jackson-annotations`和`jackson-dataformat-xml`,它们分别负责JSON解析和生成的基础功能、面向对象的映射、注解支持以及XML与JSON之间的...
- **jackson-databind**:这是Jackson最核心的部分,提供了对象到JSON和JSON到对象的映射功能。它包括`ObjectMapper`类,可以方便地将Java对象转换为JSON字符串,反之亦然。在Spring MVC中,`@ResponseBody`注解...