zoukankan      html  css  js  c++  java
  • JSON

    一、介绍

      JSON:JavaScript对象表示法(JavaScript Object Notation),一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。用来描述数据结构,它是基于纯文本的数据格式。广泛应用于服务端和客户端的数据交互。

      基本类型

        

      数组类型

        

      对象嵌套

        

    二、解析方式

      1、使用Gson处理

        Gson是Google提供的一个Java库,可用于将Java对象转换为JSON表示。也可以将JSON字符串转换成一个等效的Java对象

         (1)将对象转换为JSON字符串

          

        (2)将JSON字符串转换为对象

          

        (3)将集合转换为JSON字符串

          

         (4)将JSON字符串转换为集合

          

        (5)将Map集合转换成JSON字符串

           

        (6)将JSON字符串转换为Map集合

          

        

      2、JSON节点解析 

        I)、 Gson 的 节点对象:
          JsonElement : 所有的节点 都是 JsonElement 对象.
          JsonPrimitive : 基本的 数据类型的 节点 对象, JsonElement 的子类.
          JsonNull : 代表 空节点 对象,即 有 key, value 为空, JsonElement 的子类.
          JsonObject : 对象 数据类型的 节点 对象, JsonElement 的 子类.
          JsonArray : 数组 数据类型的 节点 对象, JsonElement 的 子类.
        II)、 JsonElement 的取值:
          JsonPrimitive : value 的 取值对应 java 的int,double,float,long,short,boolean,char,byte,String,BigDecimal,BigI nteger,Number
          JsonObject : value 的取值对应 java 的 Object 对象.
          JsonArray : value 的取值对应 java 的 List 及其子类对象

    JSON节点解析
    /**
         * JSON节点解析
         */
        @Test
        public void testParse(){
            // 准备JSON字符串
            String json = "{"flag": true,"data": {"userId":1,"uname": "张三","age": 18,"sex":true }}";
            // 获得解析器
            JsonParser parser=new JsonParser();
            // 获得根节点元素
            JsonElement element=parser.parse(json);
            //根据文档判断根节点属于什么类型的Gson节点对象
            JsonObject root=element.getAsJsonObject();
            //取得节点下的某个节点
            JsonPrimitive flagJson=root.getAsJsonPrimitive("flag");
            //基本节点取值
            boolean flag=flagJson.getAsBoolean();
            //获得data节点的值
            JsonObject dataJson=root.getAsJsonObject("data");
            //获得Gson对象,并将节点上的数据转换为对象
            User user=new Gson().fromJson(dataJson, User.class);
            System.out.println(user.getUname()+flag);
        }

      3、FastJson解析

        阿里巴巴 fastJson 是一个 Json 处理工具包,包括“序列化”和“反序列化”两部分,它 具备如下特征:速度最快,测试表明, fastjson 具有极快的性能,超越其他的 Java Json parser。包括自称最快的 JackJson;功能强大,完全支持 JavaBean、集合、 Map、 日期、 Enum,支持范型,支持自省;无依赖。

    /**
         * 将对象转换为JSON字符串
         */
        @Test
        public void testToJson(){
            //得到对象
            User user=new User(1, "张三", 18, true);
            //转换为Json字符串
            String json1=JSON.toJSONString(user);
            System.out.println(json1);
            
            
            //定义集合
            List<String> list=new ArrayList<>();
            list.add("张三");
            list.add("李四");
            list.add("王五");
            String json2=JSON.toJSONString(list);
            System.out.println(json2);
            
            List<User> userList=new ArrayList<>();
            userList.add(new User(1,"张三",18,true));
            userList.add(new User(2, "李四", 19, false));
            userList.add(new User(3,"王五",20,true));
            String json3=JSON.toJSONString(userList);
            System.out.println(json3);
        }
        /**
         * 将JSON字符串转换为对象
         */
        @Test
        public void testToObject(){
            //定义JSON字符串
            String json1= "{"userId":1,"uname":"zhangsan","age":18,"sex":true}";
            User user=JSON.parseObject(json1,User.class);
            System.out.println(user.getUname());
            
            //定义JSON字符串
            String json2 = "["zhangsan","lisi","wangwu"]";
            List<String> list=JSON.parseArray(json2,String.class);
            System.out.println(list.get(2));
            
            String json3 = "[{"age":18,"sex":true,"uname":"zhangsan","userId":1},{"age":19,"sex":false,"uname":"lisi","userId":2},{"age":20,"sex":true,"uname":"wangwu","userId":3}]";
            List<User> userList=JSON.parseArray(json3,User.class);
            System.out.println(userList.get(1).getUname());
        }

    三、Servlet中的简单应用

      

      把数据解析成JSON格式然后发送到前台

  • 相关阅读:
    tomcat配置数据源
    Spring 配置详解
    典型的软件开发模型
    600字让你读懂Git
    JVM的自愈能力
    Maven的pom.xml文件详解
    如何使用Log4j
    掌握jQuery插件开发,这篇文章就够了
    CSS Gradient详解
    CSS Transition
  • 原文地址:https://www.cnblogs.com/dhome/p/9581698.html
Copyright © 2011-2022 走看看