前言

JSON是一种轻量化的数据编码方式它不依赖于编程语言是独立的文本格式。和xml相比JSON具有格式简洁,转译速度快的特点,因此现在被广泛使用。JSON的本质是字符串,采用了特定的分隔方式对字符串进行分隔。

一、JSON的语法

JSON对象语法有对象、数组和二者混合等方式。

JSON对象的属性储存类似于键值对的存储方式,用“{}”来分隔对象,采用的是“:”分隔变量名称和值,对于JAVA来说变量名称和值都必须用” ”修饰否则会报错。各变量之间用“,”分隔,注意最后一个变量不能加“,”。

实例如下:

{"name":"张曼玉","number":"YT1995","address":"上海"}

2、数组语法

JSON数组之间使用“[]”来分隔,数组元素间用“,”隔开。元素类型可以为任意类型

实例如下:

["768547","456","124","545"]

3、混合使用

混合使用则是将对象和数组混合使用,同时还可以嵌套使用。

示意如下:

{"name":"[]","number":"YT1995","address":"上海"}

二、json的转化功能的使用

1.导入jar文件

目前常用的JSON转化工具有谷歌的Gson和阿里的fastjson,这两的工具都是jar文件,使用时将下载的jar文件导入项目中既可以使用jar进行转换。

2.jar中的转换功能的使用

1、Gson中进行数据转换

类到字符串:1创建Gson对象,2创建类对象,3调用toJson方法将类对象转化成字符串

package Demo;

import com.google.gson.Gson;

public class Demo2 {
public static void main(String[] args) {
Gson g=new Gson();//创建Gson对象
Student s=new Student("张曼玉","YT1995","上海");//创建学生对象
String s1 = g.toJson(s);//将学生对象转化为字符串
System.out.println(s1);
}
}

字符串到类:1创建Gson对象,2.调用fromJson方法转化字符串

package Demo;

import com.google.gson.Gson;

public class Demo1 {
public static void main(String[] args) {
Gson g=new Gson();
String data="{\"name\":\"张曼玉\",\"number\":\"YT1995\",\"address\":\"上海\"}";
Student s1 = g.fromJson(data, Student.class);//将字符串转化为对象
System.out.println(s1);
}
}

2、fastjson中进行数据转换

类到字符串:与Gson不同的是fastjson不需要创建Gson对象而是直接调用方法将类转化为字符串;而且打印出的对象顺序也与Gson不同。

package Demo;

import com.alibaba.fastjson.JSON;

public class Demo3 {
public static void main(String[] args) {
//{"name":"张曼玉","number":"YT1995","address":"上海"}
//{"address":"河南","name":"柳岩","number":"hn1314"}
Student s1=new Student("柳岩","hn1314","河南");//创建学生类
String s = JSON.toJSONString(s1);//将学生类转化为字符串
System.out.println(s);
}
}

字符串到类:同样也不需创建对象而是直接调用JSON.parseObject方法实现字符串到类的转化

package Demo;

import com.alibaba.fastjson.JSON;

import java.util.List;

public class Demo4 {
public static void main(String[] args) {
String data="{\"address\":\"河南\",\"name\":\"柳岩\",\"number\":\"hn1314\"}";
Student s1 = JSON.parseObject(data, Student.class);//将字符串转化为类
System.out.println(s1);
}
}
 

json知识点总结(一)--基础介绍的更多相关文章

  1. Java最重要的21个技术点和知识点之JAVA基础

     (一)Java最重要的21个技术点和知识点之JAVA基础  写这篇文章的目的是想总结一下自己这么多年JAVA培训的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Ja ...

  2. Node.js学习笔记(一)基础介绍

    什么是Node.js 官网介绍: Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...

  3. Node.js 基础介绍

    什么是Node.js 官网介绍: Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...

  4. 剑指Offer——知识点储备-Java基础

    剑指Offer--知识点储备-Java基础 网址来源: http://www.nowcoder.com/discuss/5949?type=0&order=0&pos=4&pa ...

  5. laravel基础课程---1、laravel安装及基础介绍(laravel如何安装)

    laravel基础课程---1.laravel安装及基础介绍(laravel如何安装) 一.总结 一句话总结: [修改composer镜像地址].[明确laravel的安装要求].[安装指定版本的la ...

  6. Jmeter元件——JSON Extractor后置处理器介绍2

    在前段时间将JSON Extractor元件做了个简单的介绍:Jmeter元件——JSON Extractor后置处理器介绍1,今天以一个具体的json,以不同的方式提取数据做个详细的介绍. 一.模拟 ...

  7. Web3D编程入门总结——WebGL与Three.js基础介绍

    /*在这里对这段时间学习的3D编程知识做个总结,以备再次出发.计划分成“webgl与three.js基础介绍”.“面向对象的基础3D场景框架编写”.“模型导入与简单3D游戏编写”三个部分,其他零散知识 ...

  8. C++ 迭代器 基础介绍

    C++ 迭代器 基础介绍 迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围.迭代器就如同一个指针.事实上,C++的指针也是一种迭代器.但是,迭代器不仅仅是指针,因此你不能认为他们一定 ...

  9. 剑指Offer——知识点储备-网络基础

    剑指Offer--知识点储备-网络基础 计算机网络 http和https的区别 (1)http是http协议运行在tcp之上,所传输的内容都是明文,客户端和服务器端都无法验证对方的身份. (2)htt ...

随机推荐

  1. 框架3.2--搭建V·P·N

    目录 部署OpenVPN 一.服务端 1.安装openvpn和证书工具 2.生成服务器配置文件 3.准备证书签发相关文件 4.准备签发证书相关变量的配置文件 5.初始化PKI生成PKI相关目录和文件 ...

  2. PHP面试常考内容之Memcache和Redis(1)

    你好,是我琉忆.继上周(2019.2-11至2-15)发布的"PHP面试常考内容之面向对象"专题后,发布的第二个专题,感谢你的阅读.本周(2019.2-18至2-22)的文章内容点 ...

  3. 35、python并发编程之多线程(理论篇)

    一 什么是线程 二 线程的创建开销小 三 线程与进程的区别 四 为何要用多线程 五 多线程的应用举例 六 经典的线程模型(了解) 七 POSIX线程(了解) 八 在用户空间实现的线程(了解) 九 在内 ...

  4. Mapper代理方式

    MyBatis入门初体验时,使用mapper的方式: 很奇怪,为什么只有interface二没有实现,怎么就可以从数据库中查出准确的数据.其实Mybatis利用了JDK动态代理实现了相应功能,下面详细 ...

  5. pytest(12)-Allure常用特性allure.attach、allure.step、fixture、environment、categories

    上一篇文章pytest Allure生成测试报告我们学习了Allure中的一些特性,接下来继续学习其他常用的特性. allure.attach allure.attach用于在测试报告中添加附件,补充 ...

  6. MybatisPlus字段自动填充配置

    实体类 @ApiModelProperty(value = "创建时间") @TableField(fill = FieldFill.INSERT) private Date gm ...

  7. Java线程池进阶

    线程池是日常开发中常用的技术,使用也非常简单,不过想使用好线程池也不是件容易的事,开发者需要不断探索底层的实现原理,才能在不同的场景中选择合适的策略,最大程度发挥线程池的作用以及避免踩坑. 一.线程池 ...

  8. Another app is currently holding the yum lock解决方法

    用yum安装包有时候会提示 ``` Another app is currently holding the yum lock; waiting for it to exit...   The oth ...

  9. 【C#表达式树 一】Expressions 命名空间 38个类 2个接口 3个枚举

    注解 抽象类 Expression 提供用于为表达式树建模的类层次结构的根. 此命名空间中派生自的类 Expression (例如 MemberExpression 和 ParameterExpres ...

  10. C#实现接口的两种方式:显示实现和隐式实现接口

    本示例声明一个接口IDimensions 和一个类 Box,显式实现了接口成员 GetLength 和 GetWidth. 通过接口实例 dimensions 访问这些成员. interface ID ...