浅谈JSONObject的使用及示例代码(JSON解析)

JSONObject只是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素。JSONObject可以很方便的转换成字符串,也可以很方便的把其他对象转换成JSONObject对象。

简介

在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用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/1nxwl-R3n6hNVMepT8LWNmw

提取码: p8w8

JSONObject

创建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 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));
		}
	}
}

运行结果

JavaBean与json字符串互转

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与json字符串互转

先定义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与json字符串互转

定义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);
		}
	}
}

运行结果

JSONArray与List互转

定义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与数组互转

定义数组,数组转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");
		}
	}
}

运行结果

到此这篇关于浅谈JSONObject的使用及示例代码(JSON解析)的文章就介绍到这了,更多相关JSONObject使用方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解JSONObject和JSONArray区别及基本用法

     一.JSONObject和JSONArray的数据表示形式 JSONObject的数据是用 {  } 来表示的, 例如:   { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业", "content" : null  }  而JSONArray,顾名思义是由JSONObject构成的数组,用  [

  • Java中JSONObject与JSONArray的使用区别详解

    最近公司开发的几个项目中,后台Action向前端传递数据都是Json格式,于是对JSONObject.JSONArray简单的研究了一下,废话不多说,想使用JSONObject.JSONArray,策则在项目中必须要有commons-lang.jar commons-beanutils.jar commons-collections.jar commons-logging.jar  ezmorph.jar json-lib-2.2.2-jdk15.jar 这些Jar包. 1.JSONObject

  • JSONObject使用方法详解

    1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包. 2.下载jar包 http://xiazai.jb51.net/201707/yuanma/lib_jb51.rar 提供了除JSONObject的jar之外依赖的其他6个jar包,一共7个jar文件 说明:因为工作中项目用到的版本是1.1的对应jdk1.3的版本,故本篇博客是基于1.1版本介绍的. 对应此版本的javadoc下载

  • JSONObject与JSONArray的使用

    1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging.jar 5.ezmorph.jar 6.json-lib-2.2.2-jdk15.jar 2.JSONObject对象使用 JSON-lib包是一个beans,collections,maps,java arrays

  • java使用JSONObject实例

    一.引入jar包使用JSONObject必须引用JSON-lib.jar,同时它还依赖于其他包common-lang.jarcommon-beanuitls.jarcommon-collections.jarcommon-logging.jarezmorph.jar二.JSONObject对象使用JSON-lib包是一个java对象.xml.JSON互相转换的包.1.将Java对象转换成 json字符串 复制代码 代码如下: Person p1=new Person();p1.setName("

  • 使用JSONObject生成和解析json的方法

    1. json数据类型 类型 描述 Number 数字型 String 字符串型 Boolean 布尔型 Array 数组 Object 对象 null 空值 (1)json中不区分整数.小数等类型,而统一使用Number来存储数字. (2)Array表示数组,以中括号"[]"括起来,元素之间以逗号分隔,元素可以为任意类型. (3)Object表示对象,类似于C语言中的结构体,以花括号"{}"括起来,其元素要求为键值对,key必须为String类型的,而value则

  • 浅谈JSONObject的使用及示例代码(JSON解析)

    JSONObject只是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素.JSONObject可以很方便的转换成字符串,也可以很方便的把其他对象转换成JSONObject对象. 简介 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON.JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于机器解析和生成.易于理解.阅读和撰写,而且Json采用完全独立于语言的文本

  • 浅谈Java多线程的优点及代码示例

    尽管面临很多挑战,多线程有一些优点使得它一直被使用.这些优点是: 资源利用率更好 程序设计在某些情况下更简单 程序响应更快 资源利用率更好 想象一下,一个应用程序需要从本地文件系统中读取和处理文件的情景.比方说,从磁盘读取一个文件需要5秒,处理一个文件需要2秒.处理两个文件则需要: 5秒读取文件A 2秒处理文件A 5秒读取文件B 2秒处理文件B --------------------- 总共需要14秒 从磁盘中读取文件的时候,大部分的CPU时间用于等待磁盘去读取数据.在这段时间里,CPU非常的

  • 浅谈Java BitSet使用场景和代码示例

    一.什么是BitSet? 注:以下内容来自JDK API: BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个boolean值.用非负的整数将BitSet的位编入索引.可以对每个编入索引的位进行测试.设置或者清除.通过逻辑与.逻辑或和逻辑异或操作,可以使用一个 BitSet修改另一个 BitSet的内容. 默认情况下,set 中所有位的初始值都是false. 每个位 set 都有一个当前大小,也就是该位 set 当前所用空间的位数.注意,这个大小与位 set 的实现有关,所以

  • 浅谈JsonObject中的key-value数据解析排序问题

    1.JsonObject中的数据是key-value形式,通过JsonObject的keys方法得到key的迭代器是无序的,要想实现排序,目前只能通过加装一层处理(方法来自Stack Overflow,感谢大神),将key-vlaue放入ThreeMap排序,排序规则默认是字母表顺序,可自定义Comparator修改. iteratorKeys = object.keys();//得到所有title SortedMap map = new TreeMap(); while (iteratorKe

  • 浅谈C++11的std::mem_fn源码解析

    目录 1.源码准备 2.通过一个简单的例子来了解std::mem_fn的作用 3.std::mem_fn源码解析 3.1.std::mem_fn解析 3.2.std::_Mem_fn解析 3.3.在代码中正确使用std::_Mem_fn 4.总结 1.源码准备 本文是基于gcc-4.9.0的源代码进行分析,std::mem_fn是C++11才加入标准的,所以低版本的gcc源码是没有std::mem_fn的,建议选择4.9.0或更新的版本去学习,不同版本的gcc源码差异应该不小,但是原理和设计思想

  • 浅谈SpringBoot内嵌Tomcat的实现原理解析

    一.序言 使用SpringBoot经常会使用内嵌的tomcat做为项目的启动容器,本文将从源码的角度出发,剖析SpringBoot内嵌Tomcat的实现原理,讨论Tomcat何时创建.何时启动以及怎么启动. 二.引入Tomcat组件 导入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId&

  • 浅谈C++11的std::function源码解析

    目录 1.源码准备 2.std::function简介 3.源码解析 3.1.std::function解析 3.2.std::_Function_handler解析 3.3._Any_data解析 3.4.std::_Function_base解析 4.总结 1.源码准备 本文是基于gcc-4.9.0的源代码进行分析,std::function是C++11才加入标准的,所以低版本的gcc源码是没有std::function的,建议选择4.9.0或更新的版本去学习,不同版本的gcc源码差异应该不

  • 浅谈java中异常抛出后代码是否会继续执行

    问题 今天遇到一个问题,在下面的代码中,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢? public void add(int index, E element){ if(size >= elements.length) { throw new RuntimeException("顺序表已满,无法添加"); //return; //需要吗? } .... } 为了回答这个问题,我编写了几段代码测试了一下,结果如下: //代码1 public

  • 浅谈ASP.NET的Postback 实例代码第1/2页

    我们知道,无论是ASP.NET1.x,2.0,甚至是以后的版本,ASP.NET最终Render到Client端通过浏览器浏览的都是一样:一个单纯的HTML.Client通过Submit Form的方式将填入Form的数据提交给Server进行处理.我们现在来看看ASP.NET整个Postback程序处理的过程. 首先我们通过一个Sample来看ASP.NET如何处理一个通过Click一个Button引起的Postback.下面是Web Page的HTML: 复制代码 代码如下: <%@ Page

  • 浅谈Java代码的 微信长链转短链接口使用 post 请求封装Json(实例)

    废话不多说,直接上代码 String longUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + MpUtil.APPID + "&redirect_uri=" + MpUtil.HOMEPAGE + "/nweixinLoginPc.fo%3Frandomcode=" + randomcode + "&response_type=co

随机推荐