jackson使用

Jackson api被广泛用于将json转换为Object并将Object转换为JSON。因此,如果您有json字符串并想在java对象中进行转换,请创建与json中的字段相同的bean的字段名。 Jackson在将json字段映射到java对象字段时遵循标准的bean约定,但是如果您有一个不遵循命名约定的json(对于以大写字母开头的ex字段),jackson不知道如何将此字段与您的java对象映射。 您可以使用@JsonProperty批注,但有时很难在每个类的每个字段上都使用此批注。这就是PropertyNamingStrategy的 用意 。 您可以根据需要修改此类。

让我们举个例子。 我们有一个像这样的json:

{'CustName':'Abhishek Somani','Result':null,'CustNo':'1234'}

请注意,每个字段的首字母均为大写字母,这不是标准的bean命名约定。 我们正在尝试将此json映射到以下bean:

public class JsonBean {/*** */private String custNo ;private String custName ; private String result;public String getResult() {return result;}public void setResult(String result) {this.result = result;}public String getCustNo() {return custNo;}public void setCustNo(String custNo) {this.custNo = custNo;}public String getCustName() {return custName;}public void setCustEm(String custName) {this.custName = custName;}
}

要将这个json映射到jsonBean,我们必须创建自己的自定义命名策略,如下所示。 在这里,我们将字段名称的首字母转换为大写。

import org.codehaus.jackson.map.MapperConfig;
import org.codehaus.jackson.map.PropertyNamingStrategy;
import org.codehaus.jackson.map.introspect.AnnotatedField;
import org.codehaus.jackson.map.introspect.AnnotatedMethod;public class MyNameStrategy extends PropertyNamingStrategy{@Overridepublic String nameForField(MapperConfigconfig,AnnotatedField field, String defaultName) {return convert(defaultName);}@Overridepublic String nameForGetterMethod(MapperConfigconfig,AnnotatedMethod method, String defaultName) {return convert(defaultName);}@Overridepublic String nameForSetterMethod(MapperConfigconfig,AnnotatedMethod method, String defaultName) {String a = convert(defaultName); return a;}public String convert(String defaultName ){char[] arr = defaultName.toCharArray();if(arr.length !=0){if ( Character.isLowerCase(arr[0])){char upper = Character.toUpperCase(arr[0]);arr[0] = upper;}}return new StringBuilder().append(arr).toString();}}

这是要测试的主要课程。 我们正在Jackson的ObjectMapper中设置customNamingStrategy。

import java.io.File;
import java.io.IOException;import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;public class JsonTest {public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {ObjectMapper mapper = new ObjectMapper();mapper.setPropertyNamingStrategy(new MyNameStrategy());File f = new File('F:/abc.json');JsonBean bean = (JsonBean)mapper.readValue(f, JsonBean.class);mapper.writeValue(new File('F:/abc1.json'),bean);System.out.println(bean.getCustEm());}}

如果您无法提供命名策略,则会得到如下所示的Exception:

Exception in thread 'main' org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field 'CustNo' (Class JsonBean), not marked as ignorable

参考: Java,J2EE和Server博客上的JCG合作伙伴 Abhishek Somani的Jackson中的PropertyNamingStrategy用法 。

翻译自: https://www.javacodegeeks.com/2013/04/how-to-use-propertynamingstrategy-in-jackson.html

jackson使用

jackson使用_如何在Jackson中使用PropertyNamingStrategy相关推荐

  1. figma设计_如何在Figma中构建设计入门套件(第1部分)

    figma设计 Figma教程 (Figma Tutorial) Do you like staring at a blank canvas every time you start a new pr ...

  2. 在excel日期比对大小_如何在Excel中防止分组日期

    在excel日期比对大小 As a teenager, group dates can be fun. If you have strict parents, that might be the on ...

  3. 表格在整个html居中显示,html 表格字符居中显示_如何在HTML中居中显示表格?

    html 表格字符居中显示_如何在HTML中居中显示表格? html 表格字符居中显示_如何在HTML中居中显示表格? html 表格字符居中显示 HTML table provides the ab ...

  4. java中转json字符串_如何在Java中转义JSON字符串-Eclipse IDE技巧

    java中转json字符串 在Java应用程序中工作或进行JSON解析时,通常很常见的做法是从某些资源(例如RESTful Web服务)中复制粘贴JSON字符串,然后使用Jackson库解析JSON. ...

  5. java 正则表达式 开头_如何在Java中修复表达式的非法开头

    java 正则表达式 开头 您是否遇到过这个令人难以置信的错误,想知道如何解决它? 让我们仔细阅读一下,研究如何解决表达式Java非法开头错误. 这是一个动态错误,这意味着编译器会发现某些不符合Jav ...

  6. python 线性回归模型_如何在Python中建立和训练线性和逻辑回归ML模型

    python 线性回归模型 Linear regression and logistic regression are two of the most popular machine learning ...

  7. 合并的表格怎么加横线_如何在excel中文字后面加横线

    如何在excel中文字后面加横线以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如何在excel中文字后面加横线 好办啊 ...

  8. excel 重复方差分析_如何在Excel中运行方差方差分析的两种方法

    excel 重复方差分析 Recently, we looked at how to Perform a One-Way Analysis of Variance in Excel. In today ...

  9. 符号在excel中的引用_如何在Excel中添加项目符号

    &符号在excel中的引用 There's no built-in feature for bullets in Excel, like there is in a Word document ...

最新文章

  1. linux shell 打印当前行号
  2. 一键生成表结构说明文档的参考,数据字典生成方式参考
  3. 在一个table中动态添加一行或删除一行
  4. CNN 卷积神经网络TensorFlow简单实现
  5. java基础----Base64算法的使用
  6. 二分二题-P1678,P3902【二分,LIS】
  7. javaweb笔记1
  8. 人生五大投资,你投对了几个?
  9. [导入]哀悼与感动同在[转载]
  10. VM虚拟机Ubuntu16 运行facenet人脸识别源码
  11. 服务器pe 装linux,微PE工具箱增加安装Linux/Ubuntu/Centos/deepin系统菜单
  12. 热切换Log4j日志级别
  13. 虚拟化实战——存储(二)
  14. 站在巨人的肩膀上-听课感想
  15. 设计模式学习笔记-2 创建者模式-工厂方法模式
  16. 08.vue.js实战笔记(计算属性、v-bind及class和style的绑定、内置指令、方法与事件)
  17. ker矩阵是什么意思_矩阵求逆的几何意义是什么?
  18. c语言编写邮箱注册登录的程序,c语言实现邮箱地址验证
  19. 第二十二天:期末考前整理的20条好句子
  20. 安兔兔android手机性能排行榜,安兔兔2018年12月Android手机性能排行榜

热门文章

  1. JVM内存管理------GC算法精解(五分钟教你终极算法---分代搜集算法)
  2. Oracle入门(六)之用户操作
  3. 非常有用的并发控制-循环栅栏CyclicBarrier
  4. Spring Boot整合Thymeleaf模板引擎
  5. c传给php数据解包,小程序源码提取工具,完美解包,一键提取小程序源代码工具_PHP源码...
  6. win10硬盘修复工具使用教程
  7. (转)公钥,私钥和数字签名这样最好理解
  8. 请求nginx静态资源报403
  9. 简单的hibernate环境搭建、自动生成model/配置/hibernate.xml配置文件
  10. java中线程死锁及避免_如何避免Java线程中的死锁?