json : json数据解析(一)
在项目中经常用到json格式的数据转换与解析,先前写过一些小例子,现在整理下,以备后用和帮助后来者。
言归正传:
使用到的jar包 :json-lib-2.4-jdk15.jar,当然你也可以用自己版本的,一般都没啥问题。
一、用于测试数据的类:
1.Student
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.json.gson; import java.util.List; /**
* gsonTest测试类 : 学生
*
* @author zhengze.su
*/
public class Student { private String name;
private String sex;
private int age;
private String address;
private List<Hobby> hobbyList;
private List<Course> courseList; /**
* @return the name
*/
public String getName() {
return name;
} /**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
} /**
* @return the sex
*/
public String getSex() {
return sex;
} /**
* @param sex the sex to set
*/
public void setSex(String sex) {
this.sex = sex;
} /**
* @return the age
*/
public int getAge() {
return age;
} /**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
} /**
* @return the address
*/
public String getAddress() {
return address;
} /**
* @param address the address to set
*/
public void setAddress(String address) {
this.address = address;
} /**
* @return the hobbyList
*/
public List<Hobby> getHobbyList() {
return hobbyList;
} /**
* @param hobbyList the hobbyList to set
*/
public void setHobbyList(List<Hobby> hobbyList) {
this.hobbyList = hobbyList;
} /**
* @return the courseList
*/
public List<Course> getCourseList() {
return courseList;
} /**
* @param courseList the courseList to set
*/
public void setCourseList(List<Course> courseList) {
this.courseList = courseList;
}
}
2.Hobby
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.json.gson; /**
* gsonTest测试类 : 爱好
*
* @author zhengze.su
*/
public class Hobby { private String hobbyName; /**
* @return the hobbyName
*/
public String getHobbyName() {
return hobbyName;
} /**
* @param hobbyName the hobbyName to set
*/
public void setHobbyName(String hobbyName) {
this.hobbyName = hobbyName;
}
}
3.Course
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.json.gson; /**
* gsonTest测试类 : 课程
*
* @author zhengze.su
*/
public class Course { private String teacherName;
private String courseName; /**
* @return the teacherName
*/
public String getTeacherName() {
return teacherName;
} /**
* @param teacherName the teacherName to set
*/
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
} /**
* @return the courseName
*/
public String getCourseName() {
return courseName;
} /**
* @param courseName the courseName to set
*/
public void setCourseName(String courseName) {
this.courseName = courseName;
}
}
4.Person
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.json.gson; /**
*
* @author Administrator
*/
public class Person { private String name;
private String age;
private String hobby; /**
* @return the name
*/
public String getName() {
return name;
} /**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
} /**
* @return the age
*/
public String getAge() {
return age;
} /**
* @param age the age to set
*/
public void setAge(String age) {
this.age = age;
} /**
* @return the hobby
*/
public String getHobby() {
return hobby;
} /**
* @param hobby the hobby to set
*/
public void setHobby(String hobby) {
this.hobby = hobby;
}
}
5.模拟获取数据
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.json.gson; import java.util.ArrayList;
import java.util.List; /**
* 获取模拟数据
*
* @author Administrator
*/
public class GetDataUtil { /**
* 获取hobbyList
*
* @return
*/
public List<Hobby> getHobbyList() {
List<Hobby> hobbyList = new ArrayList<Hobby>();
Hobby hobby = null;
for (int i = 0; i <= 2; i++) {
hobby = new Hobby();
hobby.setHobbyName("爱好(" + i + 1 + ")");
hobbyList.add(hobby);
} return hobbyList;
} /**
* 获取courseList
*
* @return
*/
public List<Course> getCourseList() {
List<Course> courseList = new ArrayList<Course>();
Course course = null;
for (int i = 0; i <= 0; i++) {
course = new Course();
course.setCourseName("课程" + (i + 1));
course.setTeacherName("老师" + (i + 1));
courseList.add(course);
} return courseList;
} public List<Student> getStudentList() { List<Student> studentList = new ArrayList<Student>();
List<Hobby> hobbyList = this.getHobbyList();
List<Course> courseList = this.getCourseList();
Student student = null;
for (int i = 0; i <= 0; i++) {
student = new Student();
student.setName("学生" + (i + 1));
if (i % 2 == 0) {
student.setSex("男");
} else {
student.setSex("女");
}
student.setAge(i + 10);
student.setHobbyList(hobbyList);
student.setCourseList(courseList);
studentList.add(student);
} return studentList; }
}
二、gsonTest测试类 : 方法类
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.json.gson; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig; /**
* gsonTest测试类 : 方法类
*
* @author zhengze.su
*/
public class GsonTest001 { // //获取模拟数据
// public void getData() {
// GetDataUtil dataUtil = new GetDataUtil();
// List<Student> studentList = dataUtil.getStudentList();
// System.out.println("studentList.size():"+studentList.size());
// } //1. list对象转换成json字符串
// 备注 :此处只是将 student 对象转换成了 json字符串,后面将利用此处的数据,将其转换为对应的对象
public void studentListToJson() {
GetDataUtil dataUtil = new GetDataUtil();
List<Student> studentList = dataUtil.getStudentList();
JSONArray jsonArray = JSONArray.fromObject(studentList);
System.out.println(jsonArray);
} //2. json字符串转list输出,类型为 String
public void jsonStrToList() {
String jsonStr = "[\"aa1\",\"bb2\",\"cc3\",\"dd4\"]";
JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(jsonStr);
System.out.println("出来吧,皮卡丘:" + jsonArray);
List<String> strList = (List) JSONSerializer.toJava(jsonArray);
for (String s : strList) {
System.out.println("打印出来看一看吆:" + s);
}
} //////// json 字符串 转为 对象,例子比较简单,主要是区分一下不同的形式
/////// 关于此处提到了 JsonConfig() ,后面再写个关于其配置的小例子
//3. json字符串转对象,以 person类为例
public void testJsonList1() { //
String json = "[{'name':'ml','age':'24','hobby':'eat'},{'name':'aarn','age':'25','hobby':'play'},{'name':'su','age':'xx','hobby':'study'}]";
JSONArray jsonarray = JSONArray.fromObject(json);
System.out.println(jsonarray);
List list = (List) JSONArray.toCollection(jsonarray, Person.class);//person类
Iterator ite = list.iterator();
while (ite.hasNext()) {
Person pp = (Person) ite.next();
System.out.println(pp.getName());
}
} //4. json字符串转对象,以 person类为例
public void testJsonList2() { //2
String json = "[{'name':'ml','age':'24','hobby':'eat'},{'name':'aarn','age':'25','hobby':'play'},{'name':'su','age':'xx','hobby':'study'}]";
JSONArray jsonarray = JSONArray.fromObject(json);
System.out.println(jsonarray);
List list = (List) JSONArray.toList(jsonarray, Person.class);
Iterator iter = list.iterator();
while (iter.hasNext()) {
Person ppp = (Person) iter.next();
System.out.println(ppp.getHobby());
}
} //5. json字符串转对象,以 person类为例
public void testJsonList3() { //
String json = "[{'name':'ml','age':'24','hobby':'eat'},{'name':'aarn','age':'25','hobby':'play'},{'name':'su','age':'xx','hobby':'study'}]";
JSONArray jsonarray = JSONArray.fromObject(json);
System.out.println(jsonarray);
List list = JSONArray.toList(jsonarray, new Person(), new JsonConfig());
Iterator itera = list.iterator();
while (itera.hasNext()) {
Person pe = (Person) itera.next();
System.out.println(pe.getAge());
}
} //6. json字符串转对象,以 person类为例
public void testJsonList4() { //
String json = "[{'name':'su','age':'25','hobby':'play'},{'name':'wa','age':'24','hobby':'eat'},{'name':'s','age':'aa','hobby':'mm'}]";
JSONArray jsonarray = (JSONArray) JSONSerializer.toJSON(json);
System.out.println(jsonarray);
List list = (List) JSONSerializer.toJava(jsonarray);
for (Object obj : list) {
JSONObject jbj = JSONObject.fromObject(obj);
Person p = (Person) JSONObject.toBean(jbj, Person.class);
System.out.println(p.getName());
}
} //7. json字符串转对象,以 person类为例
public void testJsonList5() { //
String json = "[{'name':'su','age':'25','hobby':'play'},{'name':'wa','age':'24','hobby':'eat'},{'name':'s','age':'aa','hobby':'mm'}]";
JSONArray jsonarray = (JSONArray) JSONSerializer.toJSON(json);
System.out.println(jsonarray);
List list = (List) JSONSerializer.toJava(jsonarray);
Iterator ite = list.iterator();
while (ite.hasNext()) {
JSONObject jsonObject = JSONObject.fromObject(ite.next());
Person pp = (Person) JSONObject.toBean(jsonObject, Person.class);
System.out.println(pp.getName());
}
} public static void main(String[] args) {
GsonTest001 gsonTest001 = new GsonTest001();
// gsonTest001.getData();
// gsonTest001.studentListToJson();
// gsonTest001.jsonStrToList();
// gsonTest001.testJsonList1();
// gsonTest001.testJsonList2();
// gsonTest001.testJsonList3();
// gsonTest001.testJsonList4();
// gsonTest001.testJsonList5(); }
}
下一篇将代码注释中提到的未完成的部分,包括解析 对象存在多个属性(包含集合属性)、jsonConfig()的简单使用、某个童鞋给的一份json数据的情况(据说是挺复杂的),在后面的文章中一一分享给大家。
json : json数据解析(一)的更多相关文章
- Android之JSON格式数据解析
查看原文:http://blog.csdn.net/hantangsongming/article/details/42234293 JSON:JavaScript 对象表示法(JavaScript ...
- HttpClient 模拟发送Post和Get请求 并用fastjson对返回json字符串数据解析,和HttpClient一些参数方法的deprecated(弃用)的综合总结
最近在做一个接口调用的时候用到Apache的httpclient时候,发现引入最新版本4.5,DefaultHttpClient等老版本常用的类已经过时了,不推荐使用了:去官网看了一下在4.3之后就抛 ...
- html中通过js获取接口JSON格式数据解析以及跨域问题
前言:本人自学前端开发,一直想研究下js获取接口数据在html的实现,顺利地找到了获取数据的方法,但是有部分接口在调用中出现无法展示数据.经查,发现时跨域的问题,花费了一通时间,随笔记录下过程,以方便 ...
- SAX, JSON , DOM 数据解析
//解析:将特定数据格式(如:xml,json)中提取出来所需的内容 //SAX: Simply API for XML, xml解析的一种方式,逐行解析,读一行内容,取一行内容,速度慢,占用内存小, ...
- Json.Net 数据解析
参考资料: 随笔分类 - Json.Net系列
- Java数据解析---JSON
一.Java数据解析分为:XML解析和JSON解析 XML解析即是对XML文件中的数据解析,而JSON解析即对规定形式的数据解析,比XML解析更加方便 JSON解析基于两种结构: 1.键值对类型 { ...
- 通过Jquery中Ajax获取json文件数据
1. JSON(JavaScript Object Notation): javaScript对象表示法: 是存储和交换文本信息的语法,比xml更小,更快,更易解析. 2. JSON基本书写格式 : ...
- iOS开发网络篇-JSON文件的解析
一.什么是JSON数据 1.JSON的简单介绍 JSON:是一种轻量级的传输数据的格式,用于数据的交互 JSON是javascript语言的一个子集.javascript是个脚本语言(不需要编译),用 ...
- 数据解析(XML和JSON数据结构)
一 解析 二 XML数据结构 三 JSON 数据结构 一 解析 1 定义: 从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照 ...
- C# 解析JSON格式数据
JSON简介 JSON(全称为JavaScript ObjectNotation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集.JSON采用完全独立于语言的文本格式,可 ...
随机推荐
- 实战c++中的string系列--十六进制的字符串转为十六进制的整型(一般是颜色代码使用)
非常久没有写关于string的博客了.由于写的差点儿相同了.可是近期又与string打交道,于是荷尔蒙上脑,小蝌蚪躁动. 在程序中,假设用到了颜色代码,一般都是十六进制的,即hex. 可是server ...
- 【iOS】UIWebView的HTML5扩展之canvas篇
先前公布大那个所谓的"HTML5"扩展严格说来还算不是"HTML5".曲曲几行JS代码就自诩为HTML5扩展多少有些标题党的嫌疑. 而相比之下,本篇的主题can ...
- FTPClient listFiles 阻塞问题
Android端使用 FTPClient 实现上传文件到到filezilla server(filezilla server部署在阿里云服务器)出现 listFiles阻塞.具体的现象是 Ftp Cl ...
- GIS+=地理信息+行业+大数据——纽约公开11亿条出租车和Uber原始数据下载及分析
一览众山小编辑团队 原文/ Todd Schneider 翻译/ 沈玮薇 陈翚 文献/ 蒋理 校核/ 众山小编辑/ 众山小 排版/ 徐颖 2014-2015 © 转载请注明:源自公众号"一览 ...
- QC3.0快充技术详解
QC3.0 智能手机的电池容量愈来愈大,除了省电能力外,充电速度更成为用户愈来愈重视的特点.高通(Qualcomm)的 Quick Charge 快充技术已成为业界的典范之一,继 Quick Char ...
- Spring Boot实现STOMP协议的WebSocket
关注公众号:锅外的大佬 每日推送国外优秀的技术翻译文章,励志帮助国内的开发者更好地成长! WebSocket协议是应用程序处理实时消息的方法之一.最常见的替代方案是长轮询(long polling)和 ...
- Active Directory组织单位(Organizational Unit)操作汇总
前言 本章聊Active Directory的组织单位(OU)的新增.修改.移动等操作,使用.NET Framework 为我们提供的System.DirectoryServices程序集. 不积跬步 ...
- UVA - 11827 - Maximum GCD,10200 - Prime Time (数学)
两个暴力题.. 题目传送:11827 Maximum GCD AC代码: #include <map> #include <set> #include <cmath> ...
- iOS开发-14款状态栏(StatusBar)开源软件
本文转载至 http://mobile.51cto.com/hot-418125.htm 之前逛街看到移动做推广,有一个定位应用挺好的,合理的利用了状态栏,做了一些消息提醒和隐藏动画,自己回家就做了一 ...
- IOS下SQLite的简单使用
本文转载至 http://www.cnblogs.com/cokecoffe/archive/2012/05/31/2537105.html 看着国外网站的教程,写了一个小例子,一个联系人的程序,包括 ...