JSONObject和JSONArray的简单使用(json-lib)
一. jar包
- commons-lang.jar
- commons-beanutils.jar
- commons-collections.jar
- commons-logging.jar
- ezmorph.jar
- json-lib-2.2.2-jdk15.jar
二. 代码
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; public class Test { public static void main(String[] args) {
new Test().test1();
new Test().test2();
new Test().test3();
new Test().test4();
new Test().test5();
new Test().test6();
new Test().test7();
} /**
* JSON字符串转JSONObject对象
*/
public void test1() {
String jsonStr = "{\"name\":\"ZhangSan\",\"sex\":\"boy\",\"age\":18}";
JSONObject jsonObj = JSONObject.fromObject(jsonStr);
System.out.println(jsonObj.toString());
} /**
* 简单JSONObject对象转java对象
*/
public void test2() {
JSONObject jsonObj = new JSONObject();
jsonObj.put("name", "LiSi");
jsonObj.put("sex", "girl");
jsonObj.put("age", 17);
Student student = (Student) JSONObject.toBean(jsonObj, Student.class);
System.out.println(student.getName() + " | " + student.getSex() + " | " + student.getAge());
} /**
* 复杂JSONObject对象转java对象
*/
@SuppressWarnings("rawtypes")
public void test3() {
List<Student> students = new ArrayList<Student>();
students.add(new Student("ZhangSan", "boy", 18));
students.add(new Student("LiSi", "girl", 17)); BanJi banji = new BanJi();
banji.setBanJiName("日语二班");
banji.setStudents(students); JSONObject jsonObj = JSONObject.fromObject(banji);
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("students", Student.class);
BanJi banji2 = (BanJi) JSONObject.toBean(jsonObj, BanJi.class, classMap);
System.out.println(banji2.getStudents().get(0).getName()); // 验证转换是否成功
} /**
* 简单java集合对象转JSONArray
*/
public void test4() {
List<Student> students = new ArrayList<Student>();
students.add(new Student("ZhangSan", "boy", 18));
students.add(new Student("LiSi", "girl", 17));
JSONArray jsonArray = JSONArray.fromObject(students);
System.out.println(jsonArray.toString());
} /**
* JSONArray转java集合对象
*/
@SuppressWarnings({ "unchecked", "deprecation" })
public void test5() {
JSONObject jsonObj1 = new JSONObject();
jsonObj1.put("name", "ZhangSan");
jsonObj1.put("sex", "boy");
jsonObj1.put("age", 18); JSONObject jsonObj2 = new JSONObject();
jsonObj2.put("name", "lisi");
jsonObj2.put("sex", "girl");
jsonObj2.put("age", 17); JSONArray jsonArray = new JSONArray();
jsonArray.add(0, jsonObj1);
jsonArray.add(1, jsonObj2); List<Student> students3 = JSONArray.toList(jsonArray, Student.class);
System.out.println(students3.get(0).getName());
System.out.println(students3.get(1).getName());
} /**
* 复杂java集合对象转JSONArray
*/
@SuppressWarnings({ "rawtypes", "unchecked", "deprecation" })
public void test6() {
BanJi banji1 = new BanJi();
banji1.setBanJiName("日语一班");
List<Student> students1 = new ArrayList<Student>();
students1.add(new Student("ZhangSan", "boy", 18));
banji1.setStudents(students1); BanJi banji2 = new BanJi();
banji2.setBanJiName("日语二班");
List<Student> students2 = new ArrayList<Student>();
students1.add(new Student("LiSi", "girl", 17));
banji2.setStudents(students2); List<BanJi> banjiList = new ArrayList<BanJi>();
banjiList.add(banji1);
banjiList.add(banji2); JSONArray jsonArray = JSONArray.fromObject(banjiList);
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("students", Student.class);
List<BanJi> banjiList2 = JSONArray.toList(jsonArray, BanJi.class, classMap);
System.out.println(banjiList2.get(0).getStudents().get(0).getName()); } /**
* 拆分JSONArray为JSONObject
*/
public void test7() {
JSONObject jsonObj1 = new JSONObject();
jsonObj1.put("name", "ZhangSan");
jsonObj1.put("sex", "boy");
jsonObj1.put("age", 18); JSONObject jsonObj2 = new JSONObject();
jsonObj2.put("name", "lisi");
jsonObj2.put("sex", "girl");
jsonObj2.put("age", 17); JSONArray jsonArray = new JSONArray();
jsonArray.add(0, jsonObj1);
jsonArray.add(1, jsonObj2); JSONObject object = (JSONObject) jsonArray.get(0);
System.out.println(object.toString());
} }
import java.util.List; /**
* 班级类
*/
public class BanJi { private String banJiName; // 班级名 private List<Student> students; // 学生 /**
* 构造函数
*/
public BanJi() {
super();
} // getters/setters(略)
}
/**
* 学生类
*/
public class Student { private String name; // 姓名 private String sex; // 性别 private int age; // 年龄 /**
* 构造函数
*/
public Student() {
super();
} /**
* 构造函数
*/
public Student(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
} // getters/setters(略)
}
JSONObject和JSONArray的简单使用(json-lib)的更多相关文章
- 嵌套的JsonObject与JSONArray的取值---JSON中嵌套JSONArray
在复杂的JSON数据的格式中,往往会对JSON数据进行嵌套,这样取值会比之前的取值稍微复杂一点,但是只要思路清晰,其实取法还是一样的.就跟if else语句一样,如果if中套if,if中再套if,写的 ...
- Java之JSON处理(JSONObject、JSONArray)
依赖包:json-20180130.jar MAVEN地址: <dependency> <groupId>org.json</groupId> <artifa ...
- net.sf.json JSONObject与JSONArray使用实例
实例自己想的一个实例应用场景:一个人可以有多个角色,例如:在家中是儿子,在学校是学生,在公司是程序员,一个人还可以办好多业务 * 每个业务好多个人都可以办,则标记(mark)就是记录这唯一标识的(如i ...
- json学习系列(6)JSONObject和JSONArray是JDK的集合部分延伸
我一直觉得JSONObject和JSONArray是JDK集合部分的延伸,它们与JDK的List和Map一脉相承.通过研究JSONObject和JSONArray的结构,我们顺便也复习一下JDK的内容 ...
- json:JSONObject与JSONArray的使用
1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: commons-lang.jar commons-beanutils.jar commons ...
- Fastjson, Gson, org.json.JSON三者对于JSONObject及JSONArray的判断
1.Fastjson 我们通常在已知格式的情况下直接使用JSONObject,JSONArray,但是如果遇到需要判断格式呢? try{ Object object = JSON.parse(a); ...
- json字符串转JSONObject和JSONArray以及取值
import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class JsonTest { public static v ...
- [转]java中JSONObject与JSONArray的使用详细说明及有关JSON的工具类
JSONObject与JSONArray的使用 一.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: 1.commons-lang.jar 2.c ...
- 011-JSON、JSONObject、JSONArray使用、JSON数组形式字符串转换为List<Map<String,String>>的8种方法
一.JSON数据格式 1.1.常用JSON数据格式 1.对象方式:JSONObject的数据是用 { } 来表示的, 例如: { "id" : "123", & ...
随机推荐
- JQuery 动画之 广告
html页面: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head&g ...
- Unity UI和引用的管理中心
我们来谈谈Unity的UI, 通常会写一些UI页面,当A页面需要去操作B页面的时候. 至少要获取B页面的引用吧! 一般新人都会在组件的写一个public GameObject UIB页面的属性, 然后 ...
- 一个简单的面试题 很多人也会懵 i++ 和++i的区别
以下分别输出i的值分别为多少 NSInteger i = 0 ; NSLog(@"%ld",i++); NSLog(@"%ld",i++); NSLog(@&q ...
- 图的遍历(DFS、BFS)
理论: 深度优先搜索(Depth_Fisrst Search)遍历类似于树的先根遍历,是树的先根遍历的推广: 广度优先搜索(Breadth_First Search) 遍历类似于树的按层次遍历的过程: ...
- bash的元字符(下)
` "Esc"键正下方键,替换命令 PS1=`command` {} 在当前shell中运行命令 {command1;command2} | 创建命令间的管道 command1 | ...
- Dynamics CRM2013 missing prvReadComplexControl privilege
左右ComplexControl 权限设置,SDK例如,在以下的说明,仅供内部使用的实体,但是你可以没有找到这个叫配置安全角色ComplexControl的东西的. 在msdn上面查下就会发现这么一段 ...
- MySql命令——表相关
auto_increment //自动增长 primary key(id) //指定主键 select last_insert_id();//获得添加列的主键值 create table produc ...
- Sublime 学习记录(二) package control 组件
i. 按Ctrl + ` 调出console (如果有QQ输入法会有冲突需要关闭热键) ii. 粘贴以下代码到底部命令行并运行 import urllib.requ ...
- Ubutu命令 笔记积累
1 man command 查询帮助 查询结果会有 name synopsis(概要) description 2 terminal 中快捷键: Ctrl +u 撤销 Ctrl +l 清屏 ...
- VLD 1.0 ReadMe翻译尝试
近期想学习下VLD的实现,打算从最简单的V1.0版本看起.以下是V1.0版本自己尝试翻译下,最新的2.x版本似乎强大了很多. 简介 Visual C++提供了内置的内存检测机制,但其充其量只满足了最小 ...