zoukankan      html  css  js  c++  java
  • Java开发中json使用,各对象与json相互转换

    Json:一种网络通信使用的数据格式,因为便于解析,比较流行,对象可以转为json,同样json也可以转对象。

    下面介绍下Json工具的简单使用(fastjson && jackson)。

    FastJson

      阿里的json数据解析工具包,国内比较流行,用的较多。

      对象转json字符串

        JSON.toJSONString(user);

      对象转json对象

        (JSONObject)JSON.toJSON(user);

      json字符串转对象

        JSON.parseObject(jsonString, User.class);  

      json对象转对象 

        User javaObject = JSON.toJavaObject(jsonObject, User.class);

      list 转 json

        String jsonString = JSON.toJSONString(users);

       json 转 list

        List<User> parseArray = JSON.parseArray(jsonString, User.class);

      完整示例代码(需要引入fastjson的jar包):
    package test;//JsonTest.java 文件所在位置:test包
    
    import java.util.ArrayList;
    import java.util.List;
    
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    
    
    public class JsonTest {//User 类
        static class User{
            private Integer age;
            private String name;
            public Integer getAge() {
                return age;
            }
            public void setAge(Integer age) {
                this.age = age;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            @Override
            public String toString() {
                return "User [age=" + age + ", name=" + name + "]";
            }
            
        }
        
        public static void main(String[] args) {
            // new 一个User对象
            User user = new User();
            user.setAge(1);
            user.setName("xiaojun");
            
            //对象转json字符串
            String jsonString = JSON.toJSONString(user);
            System.out.println("对象转json字符串:	" + jsonString);
            //对象转json对象
            user.setAge(2);
            JSONObject jsonObject = (JSONObject)JSON.toJSON(user);
            System.out.println("对象转json:	" + jsonObject);
            
            //json字符串转对象
            User parseObject = JSON.parseObject(jsonString, User.class);
            System.out.println("json字符串转对象:	" + parseObject);
            
            //json对象转对象
            User javaObject = JSON.toJavaObject(jsonObject, User.class);
            System.out.println("json对象转对象:	" + javaObject);
            
            User user2 = new User();
            user2.setAge(9);
            user2.setName("xiaochen");
            ArrayList<User> users = new ArrayList<>();
            users.add(user2);
            users.add(user);
            System.out.println("list 转json============	");
            System.out.println("准备转json的list:	" + users);
            
            //list 转json
            String jsonString2 = JSON.toJSONString(users);
            System.out.println("list转json:	" + jsonString2);
            
            //json 转list
            List<User> parseArray = JSON.parseArray(jsonString2, User.class);
            System.out.println("json转list:	" + parseArray);
        }
        
    }

      

    执行main方法Console控制台打印结果如下:

    Jackson 

     与FastJson一样,Jackson 应该比fastjson 出现更早,api用法有些不一样,但是使用效果差不多

     使用jackson编写的json工具类,JsonUtil:

    import java.util.List;
    
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.JavaType;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    /**
     *
     */
    public class JsonUtil {
    
        // 定义jackson对象
        private static final ObjectMapper MAPPER = new ObjectMapper();
    
        /**
         * 将对象转换成json字符串。
         * <p>Title: pojoToJson</p>
         * <p>Description: </p>
         * @param data
         * @return
         */
        public static String objectToJson(Object data) {
            try {
                String string = MAPPER.writeValueAsString(data);
                return string;
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * 将json结果集转化为对象
         *
         * @param jsonData json数据
         * @param clazz 对象中的object类型
         * @return
         */
        public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
            try {
                T t = MAPPER.readValue(jsonData, beanType);
                return t;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * 将json数据转换成pojo对象list
         * <p>Title: jsonToList</p>
         * <p>Description: </p>
         * @param jsonData
         * @param beanType
         * @return
         */
        public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
            JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
            try {
                List<T> list = MAPPER.readValue(jsonData, javaType);
                return list;
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return null;
        }
    
    }

    本文不定期更新

  • 相关阅读:
    Linnia学习记录
    漫漫考研路
    ENS的学习记录
    KnockoutJS 3.X API 第四章 数据绑定(4) 控制流with绑定
    KnockoutJS 3.X API 第四章 数据绑定(3) 控制流if绑定和ifnot绑定
    KnockoutJS 3.X API 第四章 数据绑定(2) 控制流foreach绑定
    KnockoutJS 3.X API 第四章 数据绑定(1) 文本及样式绑定
    KnockoutJS 3.X API 第三章 计算监控属性(5) 参考手册
    KnockoutJS 3.X API 第三章 计算监控属性(4)Pure computed observables
    KnockoutJS 3.X API 第三章 计算监控属性(3) KO如何实现依赖追踪
  • 原文地址:https://www.cnblogs.com/Narule/p/10101300.html
Copyright © 2011-2022 走看看