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采用完全独立于语言的文本格式,可 ...
随机推荐
- 赵雅智_Android案例_刮刮乐
实现效果 主要代码 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...
- Android摄像头採集的视频数据流怎样通过Socket实时发送到目标服务端
分两块: 1.取得摄像头採集的视频流 2.发送到server端 protected MediaRecorder mMediaRecorder; private LocalServerSocket mL ...
- [笔记] 精通正则表达式/Mastering Regular Expressions
/ 匹配<emphasis>这个tag标注的IP地址的RE:‘<emphasis>([0-9]+(\.[0-9]+){3})</emphasis>' / 锚定--a ...
- Jquery 插件 实例
先说明下应用场景,通过可配项的配置和默认项覆盖,获取指定的需求数据,填充到指定的位置(两个指定其实都是可配的) (function($) { $.fn.extend({ getOneNews: fun ...
- canvas转盘抽奖的实现(二)
本篇是<canvas转盘抽奖的实现(一)>的另一种实现方法,主要通过css3的transform以及transition过渡来实现. // ' + r + '等奖'; } draw ...
- 解析java.math.BigInteger类——构造函数
最早由于做作业,结识了java的BigInrger类.读着读着,越来越觉得有趣.后来作业做完,也不忍丢下它,索性把全部代码研究一遍. 开始的时候,一个上午时间最多读懂2个方法.但是还是有滋有味的坚持了 ...
- 【TensorFlow-windows】(零)TensorFlow的"安装"
Tensorflow的安装,具体操作就不演示了.具体操作请移步: http://blog.csdn.net/darlingwood2013/article/details/60322258#comme ...
- 网络协议之rtp---h264的rtp网络协议实现
完整的C/S架构的基于RTP/RTCP的H.264视频传输方案.此方案中,在服务器端和客户端分别进行了功能模块设计.服务器端:RTP封装模块主要是对H.264码流进行打包封装:RTCP分析模块负责产牛 ...
- EasyDarwin开源流媒体server将select改为epoll的方法
本文来自EasyDarwin团队Fantasy(fantasy(at)easydarwin.org) 一. EasyDarwin网络模型介绍 EventContext负责监听全部网络读写事件.Even ...
- 【BZOJ3307】雨天的尾巴 线段树合并
[BZOJ3307]雨天的尾巴 Description N个点,形成一个树状结构.有M次发放,每次选择两个点x,y对于x到y的路径上(含x,y)每个点发一袋Z类型的物品.完成所有发放后,每个点存放最多 ...