Json介绍

GSON


  • JSON 介绍
  • Gson 下载
  • Gson 解析 和 格式化
    • Gson 格式化
    • Gson 解析

Json 介绍

Json 全称 JavaScript Object Natation ,用来描述数据结构,它是基于纯文本的数据格式,是一种轻量级的数据交换格式。广泛应用于 服务端 与 客户端 的数据交互。

  • 格式

    Json 以 key-value的形式存储数据;

    Key的取值 为 String 类型;

    Value的取值 为 String,boolean,Number,数组,Object,null;

    Json 串 以 { 开始, 以 } 结尾;

    Json 串中 数组 是 以 [ 开始, 以 ] 结尾;

    Json 串中 Object 是 以 { 开始, 以 } 结尾;

  • 案例

    基本类型 :

      {
          "name": "张三",
          "age": 18,
          "sex": true
      }

    数组类型 :

      [
              {
                  "name": "张三",
                  "age": 18,
                  "sex": true
              },
              {
                  "name": "李四",
                  "age": 19,
                  "sex": false
              }
      ]

    对象嵌套 :

      {
          "name": "teacher",
          "computer": {
              "CPU": "intel7",
              "disk": "512G"
          },
          "students": [
              {
                  "name": "张三",
                  "age": 18,
                  "sex": true
              },
              {
                  "name": "李四",
                  "age": 19,
                  "sex": false
              }
          ]
      }
  • 树状结构

    json 字符串相当于一个倒挂的树, key 相当于 树的节点.

Gson 下载

Gson 格式化 和 解析

Gson 格式化



将 java 对象 格式化为 Json 字符串.

  • 实现步骤 :

    1. 获得需要的对象:

       Student stu = new Student();
       stu.setName("张三");
       stu.setAge(18);
       stu.setSex(true);
    2. 格式化
       Gson gson = new Gson();
       //将 对象 转化成 json 字符串
       String json = gson.toJson(stu)

Gson 解析


json Gson对象 类型
{},[] JsonElement 一切json节点皆为JsonElement(json节点)
{key:123} JsonPrimitive value为int,gson中的基本类型
{key:12.3} JsonPrimitive value为float,gson中的基本类型
{key:true} JsonPrimitive value为boolean,gson中的基本类型
{key:"123"} JsonPrimitive value为String,gson中的基本类型
{key:NULL} JsonNull value为空,gson中的Null类型
{key:{key:value}} JsonObject value为json节点,gson中的对象类型
{key:[{key,value},{key,value}]} JsonObject value为json节点,gson中的对象类型
[] JsonArray 整个节点以[]开始,gson中的数组类型

将 Json 字符串 解析 成 java 对象.

  • Gson 的 节点对象:

    JsonElement : 所有的节点 都是 JsonElement 对象.

    JsonPrimitive : 基本的 数据类型的 节点 对象, JsonElement 的子类.

    JsonNull : 代表 空节点 对象,即 有 key,value 为空,JsonElement 的子类.

    JsonObject : 对象 数据类型的 节点 对象, JsonElement 的 子类.

    JsonArray : 数组 数据类型的 节点 对象, JsonElement 的 子类.

  • JsonElement的取值:
    1. JsonPrimitive : value 的 取值对应 java

      int,double,float,long,short,boolean,char,byte,String,BigDecimal,BigInteger,Number
    2. JsonObject : value 的 取值对应 java 的 Object 对象.
    3. JsonArray : value 的 取值对应 java 的 List 及其子类对象.
  • Json的解析成 java 对象
      Gson gson = new Gson();
      // 将json 转化成 java 对象
      Student stu = gson.fromJson(json, Student.class);
  • Json 解析 成 List
      Gson gson = new Gson();
      // 将 json 转化 成 List泛型
      List<Student> stus = gson.fromJson(json, new TypeToken<List<Student>>() {}.getType());
  • Json 解析 成 mapsss

      Gson gson = new Gson();
      // 将 json 转化 成 Map泛型
      Map<String,String> map = gson.fromJson(json, new TypeToken<Map<String,String>>() {}.getType());
  • Json 节点 的解析

    步骤 :

    1. 获得 解析者

       JsonParser parser = new JsonParser();
    2. 获得 根节点元素
       JsonElement root = parser.parse(json);
    3. 根据 文档判断根节点属于 什么类型的 Gson节点对象
       //假如文档 显示 根节点 为对象类型
       // 获得 根节点 的实际 节点类型
       JsonObject element = root.getAsJsonObject();
    4. 取得 节点 下 的某个节点的 value
       // 获得 name 节点的值,name 节点为基本数据节点
       JsonPrimitive nameJson = element.getAsJsonPrimitive("name");
       String name = nameJson.getAsString();
      
       // 获得 students 节点的值, students 节点为 数组数据节点
       JsonArray arrayJson = element.getAsJsonArray("students");
       // 获得数据 的长度
       int size = arrayJson.size();
       for(int i = 0; i < size; i++) {
           //获得每一个json 元素
           JsonElement e = arrayJson.get(i);
           // 通过元素 得到需要的节点值 TODO:
       }
时间: 2024-08-24 22:00:31

Json介绍的相关文章

JSON: 介绍、应用

ylbtech-JSON:  介绍.应用 JSONP(JSON with Padding)是 JSON 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据. 为什么我们从不同的域(网站)访问数据需要一个特俗的技术(JSONP)呢?这是因为同源策略. 同源策略,它是由 Netscape 提出的一个著名安全策略,现在所有支持 JavaScript 的浏览器都会使用这个策略. 1. JSONP 应用返回顶部 2. 服务器端 JSONP 格式数据返回顶部 如客户想访问:

AFN 获取数据,数据解析:JSON 介绍

AFN的介绍: 可以自动对服务器返回的数据进行解析,默认将服务器返回的数据当做 JSON 数据解析 是集XML解析,Json解析,网络图片下载,plist解析,数据流请求操作,上传,下载,缓存等网络众多功能于一身的强大的类库. 网络获取数据一直是手机软件的重中之重,如果处理的不好,会造成很差的用户体验.随着ASIHTTPRequest的停止更新,更换网络库是必然的事情,AFNetworking就是很好的替代品.而且都是轻量级,不要担心加入太多库会多软件性能有影响. AFN使用的注意事项:  (1

iOS开发网络篇—JSON介绍

一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {"name" : "jack", "age" : 10} {"names" : ["jack", "rose", "jim"]} 标准JSON格式的注意点:key必须用双引号 要想从

Nodejs之package.json介绍说明

规范的package.json及package.json中各属性的作用. "name":包名. "description":包简介. "author":包作者. "version":版本号. "repository":源码托管地址. "maintainers":包维护者列表,一般由name,email,web三个属性组成. "contributors":贡献者列表.

介绍JSON

0x00 介绍JSON 介绍JSON :http://www.json.org/json-zh.html Introducing JSON :http://www.json.org/

Python 基础 - Day 4 Learning Note - 模块 - Json &amp; Pickle

Json和Pickle的区别 在python的序列化的两个模块中,json模块是用于字符串和python数据类型间进行转换:另一个pickle模块,是用于python特有的类型(所有数据类型和python的数据类型间进行转换.json是可以在不同语言之间交换数据的,而pickle只在python之间使用.json只能序列化最基本的数据类型,json只能把常用的数据类型序列化(列表.字典.列表.字符串.数字.),比如日期格式.类对象!josn就不行了.而pickle可以序列化所有的数据类型,包括类

Python 基础 - Json文件读写

JSON介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C.C++.Java.JavaScript.Perl.Python等).这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率). 在python中,JSON 由列表和字典组成. 序列化的两个模块中,json模块是用于

json详解

JSON技术 1.json介绍与入门 提示:js继承,js闭包,js原型对象 键值对,格式的数据.类似Map集合的数据结构 properties 集合键值对数据 轻量级:键值对,结构简单 重量级:xml格式,结构复杂 1.1.什么是json 中括号保存数组. 1.2.json数据的格式 键值对: 对象: 数组: 格式讲解: "employee":[ {"username1" : "zhangsan1","age1" : &qu

详解 JSON 和 JSONP

JSON 介绍 1.什么是 JSON? > JSON 指的是 JavaScript 对象表示法 (JavaScript Object Notation) > JSON 是一种轻量级的数据交换格式,比 XML 更小.更快.更易解析 > JSON 独立于语言的文本格式 > JSON 易于人阅读和编写,同时也易于机器解析和生成 JSON 最初来自于 JavaScript,后来被所有的编程语言支持,成为了一种通用的字符串数据格式. 2.JSON 字符串的格式 2-1."名称/值&