本文实例讲述了Java使用JSONObject操作json。分享给大家供大家参考,具体如下:
在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于机器解析和生成、易于理解、阅读和撰写,而且Json采用完全独立于语言的文本格式,这使得Json成为理想的数据交换语言。
JSON建构于两种结构:
“名称/值”对的集合(A Collection of name/value pairs),在不同的语言中,它被理解为对象(Object), 记录(record), 结构(struct), 字典(dictionary), 有趣列表(keyed list), 哈希表(hash table)或者关联数组(associative array)。
JSONObject依赖:
最后一行需要保留,有两个jdk版本的实现:json-lib-2.1-jdk13.jar和json-lib-2.1-jdk15.jar
<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency>
使用net.sf.json需要导入的jar包
jar包下载:https://pan.baidu.com/s/1iZiXw55TPwIxYFQQCaR9Gw
或者点击此处本站下载。
创建JSONObject,添加属性
//创建JSONObject JSONObject json = new JSONObject(); //添加属性 json.put("username", "张三"); json.put("password", "123"); //打印 System.out.println(json); //增加属性 json.element("sex", "男"); json.put("age", 18); System.out.println(json);
根据key返回输出
System.out.println(json.get("sex"));
判断输出对象的类型
boolean isArray = json.isArray(); boolean isEmpty = json.isEmpty(); boolean isNullObject = json.isNullObject(); System.out.println("是否数组:"+isArray+", 是否空:"+isEmpty+", 是否空为空对象:"+isNullObject);
把JSONArray添加到JSONObject中
/把JSONArray添加到JSONObject中 JSONArray jsonArray = new JSONArray(); jsonArray.add(0, "张三"); jsonArray.add(1, "123"); //开始添加 json.element("student", jsonArray); System.out.println(json);
全部代码:
import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class Json { public static void main(String[] args) { //创建JSONObject JSONObject json = new JSONObject(); //添加属性 json.put("username", "张三"); json.put("password", "123"); //打印 System.out.println(json); //增加属性 json.element("sex", "男"); json.put("age", 18); System.out.println(json); //根据key返回 System.out.println(json.get("sex")); //判断输出对象的类型 boolean isArray = json.isArray(); boolean isEmpty = json.isEmpty(); boolean isNullObject = json.isNullObject(); System.out.println("是否数组:"+isArray+", 是否空:"+isEmpty+", 是否空为空对象:"+isNullObject); System.out.println("====="); //把JSONArray添加到JSONObject中 JSONArray jsonArray = new JSONArray(); jsonArray.add(0, "张三"); jsonArray.add(1, "123"); //开始添加 json.element("student", jsonArray); System.out.println(json); } }
运行结果:
创建JSONArray,添加属性值
//创建JSONArray JSONArray jsonArray = new JSONArray(); //添加 jsonArray.add(0, "张三"); jsonArray.add(1, "123"); jsonArray.element("男"); System.
根据下标返回输出
System.out.println(jsonArray.get(0));
根据下标设置新值,修改
jsonArray.set(0, "李四"); System.out.println(jsonArray);
把JSONObject放入到JSONArray中
//把JSONObject放入到JSONArray中 JSONObject jsonObject = new JSONObject(); jsonObject.put("username", "张三"); jsonObject.put("password", "123"); jsonArray.add(jsonObject); System.
全部代码:
import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class Json { public static void main(String[] args) { //创建JSONArray JSONArray jsonArray = new JSONArray(); //添加 jsonArray.add(0, "张三"); jsonArray.add(1, "123"); jsonArray.element("男"); System.out.println(jsonArray); //根据下标返回输出 System.out.println(jsonArray.get(0)); //根据下标设置新值,修改 jsonArray.set(0, "李四"); System.out.println(jsonArray); //把JSONObject放入到JSONArray中 JSONObject jsonObject = new JSONObject(); jsonObject.put("username", "张三"); jsonObject.put("password", "123"); jsonArray.add(jsonObject); System.out.println(jsonArray); //循环输出 for(int i = 0; i < jsonArray.size(); i++) { System.out.println(jsonArray.get(i)); } } }
运行结果
student类:
public class Student { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Student(String username, String password) { super(); this.username = username; this.password = password; } public Student() { super(); // TODO Auto-generated constructor stub } @Override public String toString() { return "Student [username=" + username + ", password=" + password + "]"; } }
定义对象,JavaBean对象转json字符串
//定义对象 Student stu = new Student("张三", "123456"); //JavaBean对象转json字符串 JSONObject jsonObject = JSONObject.fromObject(stu); System.out.println(jsonObject);
json字符串转为javaBean
//json字符串转为javaBean //定义json字符串 String jsondata = "{\"username\":\"李四\", \"password\":\"123\"}"; //转为json对象 JSONObject json = JSONObject.fromObject(jsondata); //转为JavaBean对象 Student stu2 = (Student)JSONObject.toBean(json, Student.class); System.out.println(stu2.toString());
全部代码:
import net.sf.json.JSONObject; public class Json { public static void main(String[] args) { //定义对象 Student stu = new Student("张三", "123456"); //JavaBean对象转json字符串 JSONObject jsonObject = JSONObject.fromObject(stu); System.out.println(jsonObject); //json字符串转为javaBean //定义json字符串 String jsondata = "{\"username\":\"李四\", \"password\":\"123\"}"; //转为json对象 JSONObject json = JSONObject.fromObject(jsondata); //转为JavaBean对象 Student stu2 = (Student)JSONObject.toBean(json, Student.class); System.out.println(stu2.toString()); } }
输出结果:
先定义list集合,list转json字符串
//定义list集合 List list = new ArrayList(); list.add(new Student("张三", "123")); list.add(new Student("李四", "456")); //list转json字符串 JSONArray jsonArray = JSONArray.fromObject(list); System.out.println(jsonArray);
json字符串转list
//json字符串转list List list2 = new ArrayList(); String jsondata = "[{\"password\":\"123\",\"username\":\"张三\"},{\"password\":\"456\",\"username\":\"李四\"}]"; JSONArray jsonArray1 = JSONArray.fromObject(jsondata); for(int i = 0; i < jsonArray1.size(); i++) { JSONObject jsonObject2 = jsonArray1.getJSONObject(i); Student stu2 = (Student)JSONObject.toBean(jsonObject2, Student.class); list2.add(stu2); } System.out.println(list2);
全部代码
import java.util.ArrayList; import java.util.List; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class Json { public static void main(String[] args) { //定义list集合 List list = new ArrayList(); list.add(new Student("张三", "123")); list.add(new Student("李四", "456")); //list转json字符串 JSONArray jsonArray = JSONArray.fromObject(list); System.out.println(jsonArray); //json字符串转list List list2 = new ArrayList(); String jsondata = "[{\"password\":\"123\",\"username\":\"张三\"},{\"password\":\"456\",\"username\":\"李四\"}]"; JSONArray jsonArray1 = JSONArray.fromObject(jsondata); for(int i = 0; i < jsonArray1.size(); i++) { JSONObject jsonObject2 = jsonArray1.getJSONObject(i); Student stu2 = (Student)JSONObject.toBean(jsonObject2, Student.class); list2.add(stu2); } System.out.println(list2); } }
运行结果
定义map集合,Map转json字符串
//定义map集合 Map map = new HashMap(); map.put("1", new Student("张三", "123")); map.put("2", new Student("李四", "456")); //Map转json字符串 JSONObject jsonMap = JSONObject.fromObject(map); System.out.println(jsonMap);
定义字符串map集合,map集合字符串转为map
//定义字符串map集合 String jsondata = "{\"1\":{\"password\":\"123\",\"username\":\"张三\"},\"2\":{\"password\":\"456\",\"username\":\"李四\"}}"; //map集合字符串转为map Map map2 = (Map)JSONObject.fromObject(jsondata); Set set = map2.keySet(); //定义迭代器,迭代输出 Iterator ite = set.iterator(); while(ite.hasNext()) { //取出一个字符串对象 String key = (String)ite.next(); //转为json格式 JSONObject jsonObject = JSONObject.fromObject(map2.get(key)); //转为对象 Student stu = (Student)JSONObject.toBean(jsonObject, Student.class); System.out.println(key+" "+stu); }
全部代码
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import net.sf.json.JSONObject; public class Json { public static void main(String[] args) { //定义map集合 Map map = new HashMap(); map.put("1", new Student("张三", "123")); map.put("2", new Student("李四", "456")); //Map转json字符串 JSONObject jsonMap = JSONObject.fromObject(map); System.out.println(jsonMap); //定义字符串map集合 String jsondata = "{\"1\":{\"password\":\"123\",\"username\":\"张三\"},\"2\":{\"password\":\"456\",\"username\":\"李四\"}}"; //map集合字符串转为map Map map2 = (Map)JSONObject.fromObject(jsondata); Set set = map2.keySet(); //定义迭代器,迭代输出 Iterator ite = set.iterator(); while(ite.hasNext()) { //取出一个字符串对象 String key = (String)ite.next(); //转为json格式 JSONObject jsonObject = JSONObject.fromObject(map2.get(key)); //转为对象 Student stu = (Student)JSONObject.toBean(jsonObject, Student.class); System.out.println(key+" "+stu); } } }
运行结果
定义list集合,List转型JSONArray
//定义list集合 List<Student> list = new ArrayList<Student>(); list.add(new Student("张三", "123")); list.add(new Student("李四", "456")); //List转型JSONArray JSONArray jsonArray = JSONArray.fromObject(list); System.out.println(jsonArray.toString());
JSONArray转型List,JSONArray是用的上面的那个jsonArray变量
//JSONArray转型List List<Student> list2 = JSONArray.toList(jsonArray, new Student(), new JsonConfig()); Iterator<Student> ite = list2.iterator(); while(ite.hasNext()) { Student stu = ite.next(); System.out.println(stu); }
全部代码
import java.util.ArrayList; import java.util.Iterator; import java.util.List; import net.sf.json.JSONArray; import net.sf.json.JsonConfig; public class Json { public static void main(String[] args) { //定义list集合 List<Student> list = new ArrayList<Student>(); list.add(new Student("张三", "123")); list.add(new Student("李四", "456")); //List转型JSONArray JSONArray jsonArray = JSONArray.fromObject(list); System.out.println(jsonArray.toString()); //JSONArray转型List List<Student> list2 = JSONArray.toList(jsonArray, new Student(), new JsonConfig()); Iterator<Student> ite = list2.iterator(); while(ite.hasNext()) { Student stu = ite.next(); System.out.println(stu); } } }
运行结果
定义数组,数组转JSONArray
//定义数组 boolean[] boolArray = {true, false, true}; //java数组转JSONArray JSONArray jsonArray = JSONArray.fromObject(boolArray); System.out.println(jsonArray.toString());
JSONArray转java数组
//JSONArray转java数组 Object obj[] = jsonArray.toArray(); for(Object o : obj) { System.out.print(o+"\t"); }
全部代码
import net.sf.json.JSONArray; public class Json { public static void main(String[] args) { //定义数组 boolean[] boolArray = {true, false, true}; //java数组转JSONArray JSONArray jsonArray = JSONArray.fromObject(boolArray); System.out.println(jsonArray.toString()); //JSONArray转java数组 Object obj[] = jsonArray.toArray(); for(Object o : obj) { System.out.print(o+"\t"); } } }
运行结果
PS:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用:
在线JSON代码检验、检验、美化、格式化工具:
http://tools.jb51.net/code/json
JSON在线格式化工具:
http://tools.jb51.net/code/jsonformat
在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson
json代码在线格式化/美化/压缩/编辑/转换工具:
http://tools.jb51.net/code/jsoncodeformat
在线json压缩/转义工具:
http://tools.jb51.net/code/json_yasuo_trans
更多关于java相关内容感兴趣的读者可查看本站专题:《Java操作json格式数据技巧总结》、《Java数组操作技巧总结》、《Java字符与字符串操作技巧总结》、《Java数学运算技巧总结》、《Java数据结构与算法教程》及《Java操作DOM节点技巧总结》
希望本文所述对大家java程序设计有所帮助。
本文向大家介绍PHP使用PhpSpreadsheet操作Excel实例详解,包括了PHP使用PhpSpreadsheet操作Excel实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP使用PhpSpreadsheet操作Excel。分享给大家供大家参考,具体如下: 一、PhpSpreadsheet 介绍 1、PhpSpreadsheet 是什么 PhpSpreadsheet是一
本文向大家介绍java 中JXL操作Excel实例详解,包括了java 中JXL操作Excel实例详解的使用技巧和注意事项,需要的朋友参考一下 JXL操作Excel 前言: jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Ja
问题内容: 我有一些JSON(如下所示),我试图解析整个JSON,每个对象将是一个声明下面变量的类的新实例。做这个的最好方式是什么?我应该使用JSONReader还是使用JSONObject和JSONArray。我一直在阅读一些教程并提出一些一般性问题,但是我还没有看到任何有关如何解析此类数据的示例。 问题答案: 如果我要这样做,我会将整个字符串解析为一个JSONObject 然后我看到您的子类别
本文向大家介绍JAVA操作XML实例分析,包括了JAVA操作XML实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JAVA操作XML的方法。分享给大家供大家参考。具体如下: java代码如下: XML文件如下: 希望本文所述对大家的java程序设计有所帮助。
本文向大家介绍python元组操作实例解析,包括了python元组操作实例解析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python元组操作方法,分享给大家供大家参考。具体分析如下: 一般来说,python的函数用法挺灵活的,和c、php的用法不太一样,和js倒是挺像的。 在照着操作时,可以发现一个很神奇的现象: 这里我预料的应该是(1, 3, 'b', (3, 'abc')),但是
本文向大家介绍Java 使用json-lib处理JSON详解及实例代码,包括了Java 使用json-lib处理JSON详解及实例代码的使用技巧和注意事项,需要的朋友参考一下 Java 使用json-lib处理JSON详解 【项目环境】 1. JSON 数组对象转化为 List 对象; 2. List 转化为 JSON 数组对象; 3. Java 对象转化为 JSON 对象; 4. Admin.