分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

JSON

发布时间:2023-09-06 02:13责任编辑:顾先生关键词:暂无标签

一、介绍

  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格式然后发送到前台

JSON

原文地址:https://www.cnblogs.com/dhome/p/9581698.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved