【Gson】【1】Gson使用简介

简介:

一、什么是JSON

1、【定义】

   JSON(JavaScript Object Notation)是JavaScript对象表示法,用于存储和交换文本信息的语法,类似XML,但比XML更小、更灵活。它是独立的语言,具有自我描述性,所以更易理解。

   JSON使用JavaScript语法来描述数据对象,但SJON仍然独立于语言平台。JSON解析器和JSON库支持许多不同的编程语言。


2、【例子】

{

   "employees":[

        {"fristName": "Li", "lastName":"min"},

        {"fristName": "Zhang", "lastName":"feng"},

        {"fristName": "Li", "lastName":"yunfeng"},

   ]

}

这个例子中,对象"employee"包含三个对象数组,其中数组中的每个对象代表一个人名称信息。


3、【语法】

JSON语法是JavaScript对象表示法语法的子集:

(1)数据在键值对中

(2)数据由逗号分隔

(3)花括号保存对象

(4)方括号保存数组


4、【理解】

(1)数据在键值对中

这里的“数据”可以理解为“数据值”,比如键值对"firstName":"Li",数据(值)为Li,它相当于java语句的String firstName = "Li"。其中数据可以是整数或浮点数,也可以是字符串(在双引号中),亦可以是布尔值(true或false)、数组(在方括号中)、对象(右花括号中)和null。


(2)数据由逗号分隔

例如"firstName":"Li","lastName":"min",这两个键值对使用逗号隔开,相当于定义了两个变量:

String firstName = "Li";

String lastName = "min";


(3)花括号保存对象

例如{"firstName":"Li", "lastName":"min"}就是一个对象,使用java可这样理解

private class Employee

{

   String firstName = null;

   String lastName = null;


   public Employee(String firstName, String lastName)

   {

       this.firstName = firstName;

       this.lastName = lastName;

   }

}

其中{"firstName":"Li", "lastName":"min"}相当于new Employee("Li", "min")


(4)方括号保存数组

例如"employees":[{"fristName": "Li", "lastName":"min"},{"fristName": "Li", "lastName":"yunfeng"}]就是一个数组,使用java可这样理解

Employee employee1 = new Employee("Li", "min");

Employee employee2 = new Employee("Li", "yunfeng");

Employee[] employees = new Employee[]{employee1, empolyee2};


5、【备注】

关于JSON的基本知识可能见w3school,网址http://www.w3school.com.cn/json/index.asp


二、JSON解析器

聪明的你一定会想JSON结构是否可以转换为java对象?答案是肯定的,这正是该文重点讲解的内容。既然JSON是一个字符串,那么完全可以自己对字符串解析,当然重新发明轮子的事尽量少做,除非新发明的轮子更合理。现有的轮子:

(1)JSON官方网站提供了官方的Java实现(org.json),用于解析和系列化。

(2)StringTree,这个解析器的特点“简单”,JSONReader负责解析 、JSONWriter负责序列化。

(3)JSEL,不仅可以解析同时还可以处理JSON中的注释,甚至内处理一些简单的表达式,接口简单、性能不错。

除此之外,还有大名鼎鼎的jackson、GSON等等。


至于GSON与其它解析器之间的优缺点对比,请读者自己进行测试验证。


三、GSON使用说明简介

1、【GSON简介】

GSON是用于Json和Java对象之间相互转换的类库,即便Java类的源码还未实现,它是一个开源项目,其网址为http://code.google.com/p/google-gson。



此处读者可能存在疑惑,Java类的源码还未实现,通过GSON就可以转换为这个Java对象?用个例子说明吧:

(1)有一个JSON字符串{name:'GREETINGS', source:'guest'}

(2)若把这个JSON结构转换为一个Demo对象,通常会为Demo类定义两个字段name和source,但下面的Demo类定义并没有name和source字段定义实现,如下:

public class Demo

{

}

(3)运行测试方法会发现可正常工作

public static void main(String[] args)

{

   String s = "{name:'GREETINGS', source:'guest'}";

   Gson gson = new Gson();

   Demo demo = gson.fromJson(s, Demo.class);

}



2、【Gson目标】

可以使用new Gson()或GsonBuilder的create()方法创建GSON对象,由于GSON对象不会保存状态,用户可以无限制地对JSON进行序列化和反序列化操作。通过GSON对象可以轻易实现如下功能:

(1)输出简洁易读的JSON代码

(2)支持任意复杂的对象

(3)允许用户对特殊的表达式进行转换

(4)提供尽量简单的装配操作,就像操作构造器和toString()方法一样在JSON和Java对象之间切换。


     本文转自qingkechina 51CTO博客,原文链接:http://blog.51cto.com/qingkechina/1290500 ,如需转载请自行联系原作者




相关文章
|
10月前
|
程序员
中国程序员面临的挑战:行业现状与个人发展
在中国,程序员作为技术行业的中坚力量,他们面临的挑战和困境值得关注。这些挑战不仅影响着程序员的个人发展,也关系到整个技术行业的进步。本文将探讨中国程序员面临的一些主要问题,并分析这些问题背后的原因,同时探讨可能的解决方案。
250 2
|
Java 数据库连接 mybatis
Mybatis mapper动态代理解决方案
该文介绍了Mybatis中使用Mapper接口的方式代替XML配置执行SQL。Mapper接口规范包括:namespace与接口类路径相同,select ID与接口方法名一致,parameterType和方法参数类型匹配,resultType与返回值类型一致。实现过程中,需配置Mapper.xml,编写Mapper.java接口,并在Mybatis-config.xml中设置。测试类中,通过SqlSession的getMapper方法获取接口的动态代理对象,调用方法执行SQL。
561 0
|
10月前
|
SQL Java 数据库连接
MyBatis-Plus快速入门:从安装到第一个Demo
本文将带你从零开始,快速入门 MyBatis-Plus。我们将首先介绍如何安装和配置 MyBatis-Plus,然后通过一个简单的示例演示如何使用它进行数据操作。无论你是 MyBatis 的新手还是希望提升开发效率的老手,本文都将为你提供清晰的指导和实用的技巧。
2698 0
MyBatis-Plus快速入门:从安装到第一个Demo
|
存储 API 数据库
云计算-虚拟化-OpenStack
在上一篇《云计算-共享&服务》介绍过:云计算的本质是一种IT资源通过虚拟化进行的共享,是一种更高维度的服务。本文介绍:云计算和虚拟化有哪些区别,以及基于OpenStack的云计算。
|
JavaScript 前端开发 C++
CocosCreator3.8研究笔记(六)CocosCreator 脚本装饰器的理解
CocosCreator3.8研究笔记(六)CocosCreator 脚本装饰器的理解
376 0
|
JSON 数据格式
非常实用的5种json数组去重方法,函数实现思路竟是chatgpt帮我写的!
你敢信这5种json数组去重方法的实现思路竟然是chatgpt写的,chatgpt对函数的理解也太准确了吧!
747 0
|
机器学习/深度学习 存储 算法
PyTorch函数中文文档详细解释及示例(持续更新)
PyTorch函数中文文档详细解释及示例(持续更新)
517 0
PyTorch函数中文文档详细解释及示例(持续更新)
|
网络协议 API 开发者
托管静态网页|学习笔记
快速学习托管静态网页
托管静态网页|学习笔记
|
缓存 资源调度 JavaScript
Ant Design of Vue详细学习笔记(持续更新)
Ant Design of Vue详细学习笔记(持续更新)
Ant Design of Vue详细学习笔记(持续更新)