开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【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。



i_f03.gif此处读者可能存在疑惑,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,如需转载请自行联系原作者




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
微服务 - 简介
微服务 - 简介
31 0
微服务简介
最近,微服务这个概念越来越流行,很多企业开始选择微服务作为自己新的架构。 那么,什么是微服务呢? 我们先来看一下架构大神martin fowler对微服务的解释。 The term "Microservice Architecture" has sprung up over the las...
1219 0
1、CDN简介
一、什么是CDN? CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。
736 0
WTK使用简介(一)——使用入门
J2ME Wireless Toolkit(WTK)是常用的J2ME SDK,使用WTK可以进行程序的编译、校验、运行。有关WTK的信息可查询如下网址http://java.sun.com/products/j2mewtoolkit。   目前最新版本是WTK2.1,该版本支持JTWI(无线产业Java技术规范)Roadmap 1、CLDC1.1和J2ME Web Services API。本
974 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载