Java对【JSON数据的解析】--Gson解析法
Gson和fastjson分别为谷歌和阿里巴巴对JSON数据进行处理封装的jar包
两者异同点:
相同点:都是根据JSON数据创建相应的类
不同点:
1.调用方式区别
谷歌:方法都是非静态的,需要先创建对象,再去调用
阿里:方法都是静态的,直接用类调用,不需要创建对象
2.方法区别:
谷歌:fromJson(参数1,参数2)
阿里:JSON.parseXX(参数1,参数2)
具体是parseObject()还是parseArray(),根据需要定
要求:解析下面JSON数据
1.String string = “{name:’zhangsan’,age:18}”;
2.String string = “{persons:[{name:’zhangsan’,age:20},{name:’lisi’,age:21},{name:’wangwu’,age:22}]}”;
3.String string = “{no:1,name:’android’,employees:[{name:’zhangsan’,age:20},{name:’lisi’,age:21},{name:’wangwu’,age:22}]}”;
代码:
第一题:
package 谷歌和阿里解析JSON数据;
import com.google.gson.Gson;
public class Test {
public static void main(String[] args) {
//Gson解析JSON数据
//1.创建对象Person,有属性:name,age--创建结束
String string = "{name:'zhangsan',age:18}";
Gson gson=new Gson();
Person person=gson.fromJson(string, Person.class);
System.out.println(person.getName()+","+person.getAge());
}
}
class Person{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
}
}
运行结果:
第2题:
package 谷歌和阿里解析JSON数据;
import java.util.ArrayList;
import com.google.gson.Gson;
public class Test2 {
public static void main(String[] args) {
//Gson解析时,遇到对象创建对象,这个对象里所有的内容键都作为对象的属性
//1.创建第一个对象,有属性:persons,且为集合
//2.persons集合里是对象,设对象为Person
//3.Person,它有两个属性:name,age
//4.相应的类创建完毕后,就可以解析了
String string = "{persons:[{name:'zhangsan',age:20},{name:'lisi',age:21},{name:'wangwu',age:22}]}";
Gson gson=new Gson();
Persons persons=gson.fromJson(string, Persons.class);
System.out.println(persons);
}
}
class Persons{
private ArrayList<Person1> persons;
public ArrayList<Person1> getPersons() {
return persons;
}
public void setPersons(ArrayList<Person1> persons) {
this.persons = persons;
}
@Override
public String toString() {
return "Persons [persons=" + persons + "]";
}
public Persons(ArrayList<Person1> persons) {
super();
this.persons = persons;
}
public Persons() {
super();
}
}
class Person1{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public Person1(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person1() {
super();
}
}
运行结果
第三题:
package 谷歌和阿里解析JSON数据;
import java.util.ArrayList;
import com.google.gson.Gson;
public class Test3 {
public static void main(String[] args) {
//1.第一个对象有属性:no,name,employees,且employees为集合
//2.employees数组中有对象,设该对象为Person
//3.Person有属性:name,age----创建结束
String string = "{no:1,name:'android',employees:[{name:'zhangsan',age:20},{name:'lisi',age:21},{name:'wangwu',age:22}]}";
Gson gson=new Gson();
Demo demo=gson.fromJson(string, Demo.class);
System.out.println(demo);
}
}
class Demo{
private int no;
private String name;
private ArrayList<Person2> employees;
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ArrayList<Person2> getEmployees() {
return employees;
}
public void setEmployees(ArrayList<Person2> employees) {
this.employees = employees;
}
@Override
public String toString() {
return "Demo [no=" + no + ", name=" + name + ", employees=" + employees + "]";
}
public Demo(int no, String name, ArrayList<Person2> employees) {
super();
this.no = no;
this.name = name;
this.employees = employees;
}
public Demo() {
super();
}
}
class Person2{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public Person2(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person2() {
super();
}
}
运行结果:
Java对【JSON数据的解析】--Gson解析法的更多相关文章
- 截取HTML中的JSON数据并利用GSON进行解析(Android)
截取HTML中的JSON数据并利用GSON进行解析(Android) 前言 最近在做的一个Android项目,需要自行搭建服务器,队友选择买了阿里云的服务器ESC产品,在数据获取上,我们采用了Andr ...
- 用JAVA进行Json数据解析(对象数组的相互嵌套)
这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下! 假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相 ...
- Android 之 json数据的解析(jsonReader)
json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...
- HttpURLConnection从网上获取Json数据并解析详解
HttpURLConnection从网上获取Json数据并解析 1.HttpURLConnection请求数据的步骤 (1)构造一个URL接口地址: URL url = new URL("h ...
- iOS开发网络篇—JSON数据的解析
iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...
- javascript中 json数据的解析与序列化
首先明确一下概念: json格式数据本质上就是字符串: js对象:JavaScript 中的几乎所有事务都是对象:字符串.数字.数组.日期.函数,等等. json数据的解析: 就是把后端传来的json ...
- js处理json数据,java处理json数据
一.js处理json数据 处理办法之一是把本机json数据或远程返回json数据用eval函数,使之变成DOM对象. 例如: var people = { "programmers" ...
- Java对【JSON数据的解析】--fastjson解析法
要求:解析下面JSON数据 String string = "{no:1,name:'Android',employees:[{name:'zhangsan',age:20},{name:' ...
- Java对【JSON数据的解析】--官方解析法
要求:解析下面5个JSON数据 1.String string ="{name:'zhangsan',age:18}"; 2.String string2 = "{per ...
随机推荐
- 数据库问题(程序连接mysql错误)
今天服务器遇到了一个很熟悉的问题 输入 #mysql -u root -p ERROR 2002 (HY000):Can't connect to local MySQL server 随即上网找寻答 ...
- HDU 2846 Trie查询
给出若干模式串,再给出若干询问串,求每个询问串作为多少个模式串的子串出现. 如果一个串是另一个串的子串,则一定是另一个串某个前缀的后缀或者某个后缀的前缀.根据字典树的性质,将模式串的每一个后缀插入字典 ...
- DirectFB环境搭建
一.下载安装包 http://www.directfb.org/index.php?path=Main%2FDownloads git clone git://git.directfb.org/git ...
- Linux 基础(2)
Linux 基础(二) 用户 组 及权限的相关操作 一.useradd命令选项:–u:指定用户的UID useradd –u 100 mu #指定mu的UID为100–g:指定用户所属的群组 user ...
- C++STL vector详解(杂谈)
介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...
- 设计模式之“Observer”注疏#01
原文首发于我的微信公众号:GeekArtT. Observer设计模式是为了解决"信息同步更新"的问题而存在的.它试图解决这样一个问题:如果有"一堆对象"都跟随 ...
- [内存管理]连续内存分配器(CMA)概述
作者:Younger Liu, 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可. 原文地址:http://lwn.net/Articles/396657/ 1 ...
- 微信小程序,前端大梦想(五)
微信小程序之综合应用-访问网络加载数据 移动端访问网络加载数据时必不可少的功能,本章将接入豆瓣电影API,以列表的形式展现数据,支持下拉刷新及点击查看详情.重点包括: l 访问网络 l 跳转画面及传参 ...
- hdu1054最小顶点覆盖
最小定点覆盖是指这样一种情况: 图G的顶点覆盖是一个顶点集合V,使得G中的每一条边都接触V中的至少一个顶点.我们称集合V覆盖了G的边.最小顶点覆盖是用最少的顶点来覆盖所有的边.顶点覆盖数是最小顶点覆盖 ...
- 我眼中的微信小程序
开始关注微信小程序是从去年8月份开始,当时它还没这么"火",而且当时我个人对其的发展也并不看好. 其一:是因为微信是第三方软件,把我的用户数据和信息挂载在微信上这样真的可靠吗?有朋 ...