JSON

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

  1. 两种构建结构
    a) 、对象:“ 名称/ 值” 对的集合(A collection of name/value pairs)不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典 (dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组(associative array)。
    b) 、数组: 值的有序列表(An ordered list of values)在大多数语言中,它被理解为数组(array)、矢量(vector), 列表(list)或者序列
    (sequence)。经过对象、数组 2 种结构就可以组合成复杂的数据结构了。
  2. 具体形式
     Json 以 key-value 的形式存储数据
     Key 的取值 为 String 类型;
     Value 的取值 为 String,boolean,Number,数组,Object,null;
     Json 串以{开始,以}结尾;
     Json 串中数组是以[开始,以]结尾;
     Json 串中 Object 是以{开始,以}结尾;
    a)、对象是一个无序的“名称/值”对集合。一个对象以”{”开始,“}”结束。每个名称后跟一个“:”;“名称/值 ”对之间使用“,”分隔。
    b)、数组是值的有序集合。一个数组以“[”开始,“]”结束。各值间使用“,”分隔。
    c)、值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、null、 对象(object)或者数组(array)。这些结构可以嵌套。
    d)、字符串(string)是由 0 到多个 Unicode 字符组成的序列,封装在双引号中, 可 以使用反斜杠’\’进行转义。一个字符可以表示为一个单一字符的字符串
    e)、数字(number)类似 C 或者 Java 里面的数,没有用到的 8 进制和 16 进制数除外。
    一、 解析方式
  1. 使用 gson 处理
    Gson是一个Google提供的一个Java库,可用于将Java对象转换为JSON表示。它也可以被用来将 JSON 字符串转换成一个等效的 Java 对象。提供易于使用的机制如 toString()和构造函数(工厂方法)将 Java 转换为 JSON,反之亦然。允许自定义表示对象,支持任意复杂的对象,生成紧凑和可读性的
    JSON 输出
  1. 转为 Json 字符串
    Gson gson = new Gson();
    //将 对象 转化成 json 字符串
    String json = gson.toJson(obj)
  2. 解析成 java 对象
    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 及其子类对象.
    III) 、解析对象
    Json 解析成 java 对象
    {“name”:”张三”,”age”:18,”sex”:true}
    Gson gson = new Gson();
    // 将 json 转化成 java 对象
    Student stu = gson.fromJson(json, Student.class);

Json 解析 成 List
Gson gson = new Gson();
// 将 json 转化 成 List 泛型
List stus = gson.fromJson(json, new TypeToken<List>(){}.getType());

Json 解析 成 map
Gson gson = new Gson();
// 将 json 转化成 Map 泛型了 TypeToken,它是 gson 提供的数据类型转换器
Map<String,Student> map = gson.fromJson(json, newTypeToken<Map<String,Student>>(){}.getType());

Json 节点解析
解析步骤 :
①获得解析器
JsonParser parser = new JsonParser();
②获得根节点元素
JsonElement element = parser.parse(json);
③根据文档判断根节点属于什么类型的 Gson 节点对象
// 假如文档 显示 根节点 为对象类型
// 获得 根节点 的实际 节点类型
JsonObject root = element.getAsJsonObject();
④取得节点下的某个节点的 value
// 获得 flag 节点的值, flag 节点为基本数据节点
JsonPrimitive flagJson = root.getAsJsonPrimitive(“flag”);
// 基本节点取值
boolean flag = flagJson.getAsBoolean();
// 获得 data 节点的值,data 节点为 Object 数据节点
JsonObject dataJson = root.getAsJsonObject(“data”);
// 将节点上的数据转换为对象
Student stu = new Gson().fromJson(dataJson,Student.class);

  1. 使用 fastjson 处理
    阿里巴巴 fastJson 是一个 Json 处理工具包,包括“序列化”和“反序列化”两
    部分,它 具备如下特征:速度最快,测试表明,fastjson 具有极快的性能,超
    越其他的 Java Json parser。包括自称最快的 JackJson;功能强大,完全支持 Java
    Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖。
    下载路径:https://github.com/alibaba/fastjson/releases/tag/1.2.13
  1. 转为 json 字符串
    String jsonString = JSON.toJSONString(object);
  2. 解析成对象
    1). JavaBean : Person person = JSON.parseObject(jsonString, Person.class);
    2). List : List listPerson =JSON.parseArray(jsonString, Person.class);
    3). List:List listString = JSON.parseArray(jsonString, String.class);
    4). List List listMap = JSON.parseObject(jsonString, new
    TypeReference<List
    >(){});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值