JSON 解析工具的封装(Java)

  一直想有一个属于自己的JSON工具,今天终于弄好了.....

   1.添加pom依赖包

  • <!--json解析-->
    <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.7.4</version>
    </dependency>
    <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.7.4</version>
    </dependency>

  2.JSONUtils.java

  1. import com.fasterxml.jackson.annotation.JsonInclude;
    import com.fasterxml.jackson.core.type.TypeReference;
    import com.fasterxml.jackson.databind.DeserializationFeature;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.SerializationFeature; import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.*; /**
    * Created by 杨永生 on 2017/4/26.
    */
    public class JSONUtils { private final static ObjectMapper objectMapper = new ObjectMapper(); static {
    //去掉默认的时间戳格式
    objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    //设置为中国上海时区
    objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));
    objectMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
    //空值不序列化
    objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
    //反序列化时,属性不存在的兼容处理
    objectMapper.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
    //序列化时,日期的统一格式
    objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    //单引号处理
    objectMapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
    } private JSONUtils() { } public static ObjectMapper getInstance() { return objectMapper;
    } /**
    * javaBean,list,array convert to json string
    */
    public static String obj2json(Object obj){
    try {
    return objectMapper.writeValueAsString(obj);
    }catch (Exception e){
    e.printStackTrace();
    }
    return "";
    } public static <T> T obj2obj(Object obj, Class<T> clazz){
    try {
    String str=obj2json(obj);
    return json2pojo(str,clazz);
    }catch (Exception e){
    e.printStackTrace();
    }
    return null;
    } /**
    * json string convert to javaBean
    */
    public static <T> T json2pojo(String jsonStr, Class<T> clazz) {
    try {
    return objectMapper.readValue(jsonStr, clazz);
    }catch (Exception e){
    e.printStackTrace();
    }
    return null;
    } /**
    * json string convert to map
    */
    public static <T> Map<String, Object> json2map(String jsonStr)
    throws Exception {
    return objectMapper.readValue(jsonStr, Map.class);
    } public static <T> T fromJson(TypeReference<T> tr,byte[] content){
    T t=null;
    try {
    t = objectMapper.readValue(content,0, content.length, tr);
    } catch (IOException e) {
    e.printStackTrace();
    }
    return t;
    } /**
    * json string convert to map with javaBean
    */
    public static <T> Map<String, T> json2map(String jsonStr, Class<T> clazz)
    throws Exception {
    Map<String, Map<String, Object>> map = objectMapper.readValue(jsonStr,
    new TypeReference<Map<String, T>>() {
    });
    Map<String, T> result = new HashMap<String, T>();
    for (Map.Entry<String, Map<String, Object>> entry : map.entrySet()) {
    result.put(entry.getKey(), map2pojo(entry.getValue(), clazz));
    }
    return result;
    } /**
    * json array string convert to list with javaBean
    */
    public static <T> List<T> json2list(String jsonArrayStr, Class<T> clazz)
    throws Exception {
    List<Map<String, Object>> list = objectMapper.readValue(jsonArrayStr,
    new TypeReference<List<T>>() {
    });
    List<T> result = new ArrayList<T>();
    for (Map<String, Object> map : list) {
    result.add(map2pojo(map, clazz));
    }
    return result;
    } /**
    * map convert to javaBean
    */
    public static <T> T map2pojo(Map map, Class<T> clazz) {
    return objectMapper.convertValue(map, clazz);
    }
    }

    3.示例:

      Article article=JSONUtils.json2pojo(tempString, Article.class);

JSON 解析工具的封装(Java)的更多相关文章

  1. JSON 解析工具的封装(FastJSON-->Java)

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.添加依赖包 <dependency> <groupId>com.alibaba< ...

  2. java后台常用json解析工具问题小结

    若排版紊乱可查看我的个人博客原文地址 java后台常用json解析工具问题小结 这里不细究造成这些问题的底层原因,只是单纯的描述我碰到的问题及对应的解决方法 jackson将java对象转json字符 ...

  3. Java:JSON解析工具-org.json

    一.简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下. 二.准备 1.在使用org.json之前,我们应该先从该网 ...

  4. Json解析工具Jackson(使用注解)

    原文http://blog.csdn.net/nomousewch/article/details/8955796 接上一篇文章Json解析工具Jackson(简单应用),jackson在实际应用中给 ...

  5. 自定义Json解析工具

    此博客为博主原创文章,转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10689536.html fastjson是很好用的json解析工具,只可惜项目中要 ...

  6. JSON解析工具比较,主要GSON和FastJSON

    JSON解析工具比较,主要GSON和FastJSON 一 .各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确 ...

  7. [转] 各种Json解析工具比较 - json-lib/Jackson/Gson/FastJson

    JSON技术的调研报告 一 .各个JSON技术的简介和优劣1.json-libjson-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括com ...

  8. JSON解析工具-org.json使用教程

    转自:http://www.open-open.com/lib/view/open1381566882614.html 一.简介  org.json是Java常用的Json解析工具,主要提供JSONO ...

  9. Gson json解析工具

    json 解析工具 ,谷歌出品 对象转换字符串 HashMap<String,String> hashMap = new HashMap<String, String>();  ...

随机推荐

  1. java入门知识

    Java特性 简单.面向对象.支持网络.解释性.健壮性.安全性.高性能.可移植(跨平台) Java特点 开源.免费.跨平台.面向对象 应用平台 JavaSE(standard edition)(c/s ...

  2. js应用之实现图片切换效果

    数组的操作与应用 数组的定义 var 数组名=new Array(); //创建空数组 var 数组名=new Array(size);//创建指定数组长度的数组 var 数组名=new Array( ...

  3. Spring-java代理技术总结

    Spring 中采用JDk的动态代理和CGLib代理技术在运行期间织入增强,所以用户不需要装备特殊的编译器或者类装载器就可以使用AOP功能. 要使用jdk的动态代理,目标类必须实现接口,而CGLib代 ...

  4. 实用 .htaccess 用法大全

    这里收集的是各种实用的 .htaccess 代码片段,你能想到的用法几乎全在这里. 免责声明: 虽然将这些代码片段直接拷贝到你的 .htaccess 文件里,绝大多数情况下都是好用的,但也有极个别情况 ...

  5. shell脚本监控目录下文件被篡改时报警

    思路: 目录下文件被篡改的几种可能: 1.被修改 2.被删除 3.新增文件 md5命令详解 参数: -b 以二进制模式读入文件内容 -t 以文本模式读入文件内容 -c 根据已生成的md5值,对现存文件 ...

  6. 关于Android开发的几点建议

    绝不要在UI线程中做数据处理的工作,这会让你的app变慢,带来极差的用户体验. 要按照google发布的Design指导意见来设计app,比如一个holo主题app会给用户带来更好的用户体验. 不要复 ...

  7. 如何进行SQL性能优化

    在SQL查询中,为了提高查询的效率,我们常常采取一些措施对查询语句进行SQL性能优化.本文我们总结了一些优化措施,接下来我们就一一介绍. 1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE ...

  8. jmeter配置、安装

    一. 工具描述 apache jmeter是100%的java桌面应用程序,它被设计用来加载被测试软件功能特性.度量被测试软件的性能.设计jmeter的初衷是测试web应用,后来又扩充了其它的功能.j ...

  9. React文档翻译系列(二)Hello World

    这是React文档翻译系列的第二篇,前一篇介绍了如何安装react,本篇主要介绍react的知识体系,掌握了基本的知识体系,才能更好的学习React. Hello World 开始React最简单的方 ...

  10. How do you make an awesome team?(来考验一下自己的英语能力吧)

    How do you make an awesome team? I was talking to my awesome friend Amy Hanlon (who is a software en ...