zoukankan      html  css  js  c++  java
  • java中的json使用

    import org.json.simple.JSONArray;
    import org.json.simple.JSONObject;

    /**
     * 使用的是json-lib-2.4.jar
     * @author yes
     *
     */
    public class TestJson {
        public static void main(String[] args) throws Exception {   
              //定义一个json对象
               JSONObject jo = new JSONObject();
               jo.put("id", "1");
               jo.put("name", "yang");
               jo.put("age", "13");

               //定义一个Json数组
               JSONArray ja = new JSONArray();
               ja.add(0, "yang");
               ja.add(1,"li");
               ja.add(2, "zhang");

               System.out.println("json对象的格式:"+jo);
               System.out.println("json数组的格式:"+ja);

               //使用类自带的方法来转换成String类型
               String str_ = jo.toJSONString();
               String strs_ = ja.toJSONString();

               System.out.println("json对象-->String"+str_);
               System.out.println("json数组-->String"+strs_);
        }       
    }

    执行结果:
    json对象的格式:{"id":"1","age":"13","name":"yang"}
    json数组的格式:["yang","li","zhang"]
    json对象-->String{"id":"1","age":"13","name":"yang"}
    json数组-->String["yang","li","zhang"]

    3.Json在数据传输中的使用

    a.将各种类型装换成Json类型字符串
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    public class Test03 {
        public static void main(String[] args) {        
        //创建一个User对象(name,age,id)
            User user = new User();
            user.setAge(22);
            user.setName("张三");
            user.setId(33);

            List li = new ArrayList();  
            //创建一个Map,放入三组值
        Map<String, Object> hashMap = new HashMap<String, Object>();
               hashMap.put("name", "ZHULI");
               hashMap.put("age", "30");
               hashMap.put("id", "4");

             //向List中放入数据   
                li.add(0, "123");
                li.add(1,"444");  
                li.add(hashMap);

            //将List,Map,Bean---->json类型字符串  
                String stra = GsonUtil.GsonString(user);
                String strb = GsonUtil.GsonString(hashMap);
                String strc = GsonUtil.GsonString(li);

                System.out.println("Bean-->String结果:"+stra);
                System.out.println("Map-->String结果:"+strb);
                System.out.println("List-->String结果"+strc);

        }
    }
    执行结果:
    Bean-->String结果:{"name":"张三","age":22,"id":33}
    Map-->String结果:{"id":"4","age":"30","name":"ZHULI"}
    List-->String结果["123","444,{"id":"4","age":"30","name":"ZHULI"}]


    b.将各种类型的json类型字符串解析出来

    //1.将JsonArray类型字符串转换成Bean或list

    import java.util.List;
    import Socket.User;

    public class Test02 {

    public static void main(String[] args) {
        //定义一个jsonArrayString
        String json = "[{'name':'yang','id':'1','age':'18'},"
                + "{'name':'zhang','id':'2','age':'13'}]";

        //jsonString转list,User类自己创建,三个属性
        List<User> li = GsonUtil.jsonArrayToList(json,User.class);
        for(User user : li){
            String name = user.getName();
            Integer id = user.getId();
            Integer age = user.getAge();
            System.out.println("学生的姓名是:"+name+"  "+"ID是:"+id+"  "+"年龄是:"+age);
        }   
      }
    }

    执行结果:
    学生的姓名是:yang  ID是:1  年龄是:18
    学生的姓名是:zhang  ID是:2  年龄是:13


    将JsonArray类型字符串转换成List中包含map的

    import java.util.List;
    import java.util.Map;

    public class Test05 {
        public static void main(String[] args) {

            String json = "['123','444',{'id':'4','age':'30','name':'ZHULI'}]";

            //list中含有Map但不全是Map
            List li = GsonUtil.GsonToListMap(json);
            Map m  =(Map) li.get(2);        
            System.out.println(m.get("age"));

        }
    }
    //如果list中全部是Map类型的数据,使用GsonToListMap();方法
    执行结果:
    30
    123

    c.实用性比较高的,复杂的数据转化成Bean进行操作

    //先贴出学生类
    package TestJson;

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;

    public class Student {
        private String id;
        private String nickName;
        private String email;
        private String age;
        private List<String> books = new ArrayList<String>();
        private  HashMap<String, String> booksMap = new HashMap<String, String>();
        //获取set,get方法
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getNickName() {
            return nickName;
        }
        public void setNickName(String nickName) {
            this.nickName = nickName;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        public String getAge() {
            return age;
        }
        public void setAge(String age) {
            this.age = age;
        }
        public List<String> getBooks() {
            return books;
        }
        public void setBooks(List<String> books) {
            this.books = books;
        }
        public HashMap<String, String> getBooksMap() {
            return booksMap;
        }
        public void setBooksMap(HashMap<String, String> booksMap) {
            this.booksMap = booksMap;
        }  

    }

    //测试代码
    package TestJson;

    public class Test05 {
        public static void main(String[] args) {
        //定义一个包含list,map类型的字符串
            String json = "{'books':['数学','语文','英语','物理','化学','生物'],'booksMap':{'3':'英语','2':'语文','1':'数学','6':'生物','5':'化学','4':'物理'},'email':'965266509@qq.com','nickName':'小明','id':'1','age':'22'}";  
        //转化成Bean   
        Student su = GsonUtil.GsonToBean(json, Student.class);
        System.out.println("学生的姓名是:"+su.getNickName());
        System.out.println("学生学习的第一门课:"+su.getBooks().get(0));
        System.out.println("序号3课程是:"+su.getBooksMap().get("3"));
        }
    }

    执行结果:
    学生的姓名是:小明
    学生学习的第一门课:数学
    序号3对应的课程是:英语

    5.将基本的转化实现放到了一个工具类中。GsonUtil.java

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;

    import com.google.gson.Gson;
    import com.google.gson.JsonArray;
    import com.google.gson.JsonElement;
    import com.google.gson.JsonParser;
    import com.google.gson.reflect.TypeToken;

    /**
     * 使用gson来操作Json
     * 1.对象实体类,list,map,等转化成----->jsonString(进行数据传递)
     * 2.jsonString转化成----->对象实体类,list,map(解析返回的数据)
     * 3.我使用的是gson-2.2.2.jar
     * @author yes
     *
     */

    public class GsonUtil {


    private static Gson gson = null;
        static {
            if (gson == null) {
                gson = new Gson();
            }
        }


        /**
         * 将object对象转成json字符串(jsonString)
         * boject 可以是List,也可以是Bean(对象类型)
         * @param object
         */
        public static String GsonString(Object object) {
            String gsonString = null;
            if (gson != null) {
                gsonString = gson.toJson(object);
            }
            return gsonString;
        }


        /**入参是json对象
         * 将gsonObjectString转成泛型bean(实体类)
         * @param gsonString
         */
        public static <T> T GsonToBean(String gsonString, Class<T> cls) {
            T t = null;
            if (gson != null) {
                t = gson.fromJson(gsonString, cls);
            }
            return t;
        }

        /**
         * 这里的入参是json数组类型的字符串
         * jsonArrayString转成list
         */
        public static <T> List<T> jsonArrayToList(String json, Class<T> cls) {
            Gson gson = new Gson();
            List<T> list = new ArrayList<T>();
            JsonArray array = new JsonParser().parse(json).getAsJsonArray();
            for(final JsonElement elem : array){
                list.add(gson.fromJson(elem, cls));
            }
            return list;
        }



        /**
         * List对泛型没有要求
         * jsonString转成list中有map的
         */
        public static <T> List<Map<String, T>> GsonToListMap(String gsonString) {
            List list = null;
            if (gson != null) {
                list = gson.fromJson(gsonString,
                        new TypeToken<List>() {
                        }.getType());
            }
            return list;
        }

        /**
         * 要求List中全部是Map
         * jsonString转成list中有map的
         */
        public static <T> List<Map<String, T>> GsonToListMaps(String gsonString) {
            List<Map<String, T>> list = null;
            if (gson != null) {
                list = gson.fromJson(gsonString,
                        new TypeToken<List<Map<String, T>>>() {
                        }.getType());
            }
            return list;
        }


        /**
         * jsonString转成map的
         */
        public static <T> Map<String, T> GsonToMaps(String gsonString) {
            Map<String, T> map = null;
            if (gson != null) {
                map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {
                }.getType());
            }
            return map;
        }

        /**
         * map转jsonString,指定了Map类型
         */
        public static String MapToJson(Map<String,Object> map){
            String str = null;
            if(gson != null){
                str = gson.toJson(map);
            }
            return str;
        }    
    }

  • 相关阅读:
    算术操作、张量转换、矩阵运算、归约计算
    CNN与RNN
    基本使用与常用函数
    RNN与LSTM
    CNN训练算法与正则化
    CNN的层级结构
    激活函数
    反向传播与参数更新
    Pipline
    模型存储
  • 原文地址:https://www.cnblogs.com/loveMis/p/10315739.html
Copyright © 2011-2022 走看看