org.json的用法

闲话少说,通过实例简单介绍一下org.json的用法,用到的jar包是json-20090211.jar

package com.ilucky.util.orgjson;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * @author IluckySi
 * @since 20150407
 */
public class OrgjsonUtil {

	public static void main(String[] args) {
		try {
			//JSONObject的用法.
			System.out.println("-----test1-----");
			testJsonObject();

			//JSONArray的用法.
			System.out.println("-----test2-----");
			testJsonArray();

			//JSONObject,JSONArray和集合的复杂用法.
			System.out.println("-----test3-----");
			testComplex();
		} catch (Exception e) {
			System.out.println("测试发生异常: " + e);
		}
	}

	public static void testJsonObject() throws JSONException {
		JSONObject jo = new JSONObject();
		jo.put("username", "IluckySi");
		jo.put("age", 27);
		jo.put("sex", true);
		Map<String, String> skill = new HashMap<String, String>();
		skill.put("java", "不错");
		skill.put("javascript", "凑合");
		skill.put("jquery", "挺好");
		jo.put("skill", skill);
		String username = jo.getString("username");
		int age = jo.getInt("age");
		boolean sex = jo.getBoolean("sex");
		JSONObject skill2 = new JSONObject(jo.getString("skill"));
		System.out.println(username + ", 年龄 = " + age + ", 性别 = " + (sex == true ? "男" : "女") + ", 技能如下:");
		String[] names = JSONObject.getNames(skill2);
		for(String name : names) {
			System.out.println(name + ": " + skill2.getString(name));
		}
	}

	public static void testJsonArray() throws JSONException {
		JSONArray ja = new JSONArray();
		JSONObject jo = new JSONObject();
		jo.put("username", "IluckySi");
		jo.put("age", 27);
		jo.put("sex", true);
		ja.put(jo);
		JSONObject jo2 = new JSONObject();
		jo2.put("username", "IluckySi2");
		jo2.put("age", 28);
		jo2.put("sex", false);
		ja.put(jo2);
		for(int i = 0; i < ja.length(); i++) {
			JSONObject j = (JSONObject)ja.get(i);
			String username = j.getString("username");
			int age = j.getInt("age");
			boolean sex = j.getBoolean("sex");
			System.out.println(username + ", 年龄 = " + age + ", 性别 = " + (sex == true ? "男" : "女"));
		}

	}

	public static void testComplex() throws JSONException {
		JSONObject jo = new JSONObject();
		jo.put("username", "IluckySi");
		jo.put("age", 27);
		jo.put("sex", true);
		Map<Object, Object> message = new HashMap<Object, Object>();
		message.put("result", "success");
		message.put("message", "测试");
		List<Map<Object, Object>> list = new ArrayList<Map<Object, Object>>();
		Map<Object, Object> user1 = new HashMap<Object, Object>();
		user1.put("name", "name1");
		user1.put("password", "password1");
		list.add(user1);
		Map<Object, Object> user2 = new HashMap<Object, Object>();
		user2.put("name", "name1");
		user2.put("password", "password1");
		list.add(user2);
		message.put("users", list);
		jo.put("message", message);
		String send = jo.toString();
		System.out.println("要测试的消息" + send);
		send(send);
	}

	private static void send(String send) throws JSONException {
		JSONObject jo = new JSONObject(send);
		String username = jo.getString("username");
		int age = jo.getInt("age");
		boolean sex = jo.getBoolean("sex");
		JSONObject u2 = new JSONObject(jo.getString("message"));
		String result = u2.getString("result");
		String message = u2.getString("message");
		System.out.println(username + ", 年龄 = " + age + ", 性别 = " + (sex == true ? "男" : "女") + ", result=" + result
				+ ", message =" + message);
		String users = u2.getString("users");
		JSONArray ja = new JSONArray(users);
		for(int i = 0; i < ja.length(); i++) {
			JSONObject j = (JSONObject)ja.get(i);
			String name = j.getString("name");
			String password = j.getString("password");
			System.out.println("name = " + name + ", password = " + password);
		}
	}
}

/**
输出结果:
-----test1-----
IluckySi, 年龄 = 27, 性别 = 男, 技能如下:
javascript: 凑合
java: 不错
jquery: 挺好
-----test2-----
IluckySi, 年龄 = 27, 性别 = 男
IluckySi2, 年龄 = 28, 性别 = 女
-----test3-----
要测试的消息{"message":{"message":"测试","result":"success","users":[{"name":"name1","password":"password1"},{"name":"name1","password":"password1"}]},"sex":true,"username":"IluckySi","age":27}
IluckySi, 年龄 = 27, 性别 = 男, result=success, message =测试
name = name1, password = password1
name = name1, password = password1
*/
时间: 2024-11-12 18:06:32

org.json的用法的相关文章

JSON.parse()和JSON.stringify() 用法

parse 从字符串解析出json对象: var data = '{"a":1,"b":2}'; JSON.parse(data); 返回Object a:1 b:2 _proto_:Object stringify从json对象解析出字符串: var data = {a:1,b:2} JSON.stringify(data) 返回: '{"a":"1","b":"2"}' JSON.p

再谈Newtonsoft.Json高级用法

上一篇Newtonsoft.Json高级用法发布以后收到挺多回复的,本篇将分享几点挺有用的知识点和最近项目中用到的一个新点进行说明,做为对上篇文章的补充. 阅读目录 动态改变属性序列化名称 枚举值序列化问题 全局设置 总结 回到顶部 动态改变属性序列化名称 "动态改变属性序列化名称"顾名思义:在不同场景下实体字段序列化后字段名称不同,比如有下面实体A,正常序列化后json为{"Id":"123"} public class A { public

Django返回json数据用法示例

最近在写前端ajax发送请求到后台,结果数据提交成功,但是一直未执行成功回调函数,经过多番查找资料,终于找到答案. 本文实例讲述了Django返回json数据用法.分享给大家供大家参考,具体如下: 1.前端.jQuery发送GET请求,并解析json数据.getJSON方法可参考这里. ? 1 2 3 4 5 url = "http://example/?question=" + question + "&rand=" + Math.random(); $.

Newtonsoft.Json高级用法之枚举中文转义

最近看博客园中 焰尾迭的两篇关于"Newtonsoft.Json高级用法"的文章受到了很多人的评论,一度登入到头条推荐. 今天我就不再重复焰尾迭博文中的一些提过的Newtonsoft.Json的高级用法.大家如果想知道直接去看. Newtonsoft.Json高级用法 再谈Newtonsoft.Json高级用法 我主要说焰尾迭没有提到的用法——枚举中文转义 枚举值序列化问题(摘自焰尾迭段落) public enum NotifyType { /// <summary> //

Jquery之JSON的用法

今天讲了Jquery里面JSON的用法,下面是今天讲课给的例子: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <meta htt

Newtonsoft.Json 基本用法

Newtonsoft.Json 是.net 开源的一个json格式处理类库 官方网站:http://json.codeplex.com/ 在使用的项目引用Newtonsoft.Json库.平常使用的方法有序列化与反序列方法 1 序列化:把一个对象序列化成json格式的字符串 V_BBSTopic_User entity = db.GetTEntity<V_BBSTopic_User>(sql); if (entity != null) { string json = JsonConvert.S

Newtonsoft.Json高级用法

手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数据,经过分析一个简单的列表接口每一行数据返回了16个字段,但是手机APP端只用到了其中7个字段,剩余9个字段的数据全部都是多余的,如果接口返回数据为40K大小,也就是说大约20K的数据为无效数据,3G网络下20K下载差不多需要1s,不返回无效数据至少可以节约1s的时间,大大提高用户体验.本篇将为大家

Newtonsoft.Json 高级用法

基本用法 Json.NET是支持序列化和反序列化DataTable,DataSet,Entity Framework和Entity的.下面分别举例说明序列化和反序列化. DataTable: //序列化DataTable DataTable dt = new DataTable(); dt.Columns.Add("Age", Type.GetType("System.Int32")); dt.Columns.Add("Name", Type.G

Newtonsoft.Json高级用法--转载至 焰尾迭 随笔

本人只做搬运工,以这方便自己学习的态度!以下内容均为拷贝! 如有不适请联系本人! 本文原作者:焰尾迭 本文地址:http://www.cnblogs.com/yanweidie/p/4605212.html#commentform 手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数据,经过分析一个简单的列表接口每一行数据返回了16个字段,但是手机A