`

JSON —— org.json包使用测试

阅读更多
package org.json;

import junit.framework.TestCase;

public class Test extends TestCase {

	/*{
	"JSONArray": [],
	"JSONObject": {},
	"String": "98.6",
	"\\u2028": "\u2028",
	"\\u2029": "\u2029",
	"bool": "true",
	"double": 1.2345678901234568E29,
	"false": false,
	"foo": [
	    true,
	    false,
	    9876543210,
	    0,
	    1.00000001,
	    1.000000000001,
	    1,
	    1.0E-17,
	    2,
	    0.1,
	    2.0E100,
	    -32,
	    [],
	    {},
	    "string",
	    666,
	    2001.99,
	    "so \"fine\".",
	    "so <fine>.",
	    true,
	    false,
	    [],
	    {}
	],
	"int": 57,
	"keys": [
	    "foo",
	    "op",
	    "String",
	    "JSONObject",
	    "\\u2028",
	    "ten",
	    "true",
	    "int",
	    "bool",
	    "\\u2029",
	    "to",
	    "double",
	    "JSONArray",
	    "null",
	    "zero",
	    "false"
	],
	"null": null,
	"op": "Good",
	"ten": 10,
	"to": null,
	"true": true,
	"zero": -0
	}
	String: 98.6
	bool: true
	to: null
	true: true
	foo: [true,false,9876543210,0,1.00000001,1.000000000001,1,1.0E-17,2,0.1,2.0E100,-32,[],{},"string",666,2001.99,"so \"fine\".","so <fine>.",true,false,[],{}]
	op: Good
	ten: 10
	oops: false
	*/
	public void testReadJSON() {
		JSONArray jsonArray;
		JSONObject jsonObj;
		try {
			jsonObj = new JSONObject(
					"{foo: [true, false,9876543210,    0.0, 1.00000001,  1.000000000001, 1.00000000000000001,"
							+ " .00000000000000001, 2.00, 0.1, 2e100, -32,[],{}, \"string\"], "
							+ "  to   : null, op : 'Good',"
							+ "ten:10} postfix comment");

			jsonObj.put("String", "98.6");
			jsonObj.put("JSONObject", new JSONObject());
			jsonObj.put("JSONArray", new JSONArray());
			jsonObj.put("int", 57);
			jsonObj.put("double", 123456789012345678901234567890.);
			jsonObj.put("true", true);
			jsonObj.put("false", false);
			jsonObj.put("null", JSONObject.NULL);
			jsonObj.put("bool", "true");
			jsonObj.put("zero", -0.0);
			jsonObj.put("\\u2028", "\u2028");
			jsonObj.put("\\u2029", "\u2029");
			jsonArray = jsonObj.getJSONArray("foo");
			jsonArray.put(666);
			jsonArray.put(2001.99);
			jsonArray.put("so \"fine\".");
			jsonArray.put("so <fine>.");
			jsonArray.put(true);
			jsonArray.put(false);
			jsonArray.put(new JSONArray());
			jsonArray.put(new JSONObject());
			jsonObj.put("keys", JSONObject.getNames(jsonObj));
			System.out.println(jsonObj.toString(4));

			System.out.println("String: " + jsonObj.getDouble("String"));
			System.out.println("  bool: " + jsonObj.getBoolean("bool"));
			System.out.println("    to: " + jsonObj.getString("to"));
			System.out.println("  true: " + jsonObj.getString("true"));
			System.out.println("   foo: " + jsonObj.getJSONArray("foo"));
			System.out.println("    op: " + jsonObj.getString("op"));
			System.out.println("   ten: " + jsonObj.getInt("ten"));
			System.out.println("  oops: " + jsonObj.optBoolean("oops"));
		} catch (JSONException e) {
			e.printStackTrace();
		}
	}

	/*{
	"Testing JSONString interface": {"A beany object":42},
	"aBoolean": true,
	"aNumber": 42,
	"aString": "A beany object"
	}
	*/
	public void testBean() {
		Obj obj = new Obj("A beany object", 42, true);
		JSONObject jsonObj;
		String sa[] = { "aString", "aNumber", "aBoolean" };
		jsonObj = new JSONObject(obj, sa);
		try {
			jsonObj.put("Testing JSONString interface", obj);
			System.out.println(jsonObj.toString(4));
		} catch (JSONException e) {
			e.printStackTrace();
		}

	}

	/*
	 * [1,2,3]
	 */
	public void testArr() {
		int ar[] = { 1, 2, 3 };
		JSONArray ja;
		try {
			ja = new JSONArray(ar);
			System.out.println(ja.toString());
		} catch (JSONException e) {
			e.printStackTrace();
		}

	}

	/*
	{"single":"MARIE HAA'S","Johnny":"MARIE HAA\\'S","foo":"bar","baz":[{"quux":"Thanks, Josh!"}],"obj keys":"11"}
	{"a":[[["b"]]]}
	 */
	public void testJsonStringer() {
		JSONStringer jsonStringer;
		String str;
		jsonStringer = new JSONStringer();
		try {
			str = jsonStringer.object().key("single").value("MARIE HAA'S").key(
					"Johnny").value("MARIE HAA\\'S").key("foo").value("bar")
					.key("baz").array().object().key("quux").value(
							"Thanks, Josh!").endObject().endArray().key(
							"obj keys").value("11").endObject().toString();

			System.out.println(str);

			System.out.println(new JSONStringer().object().key("a").array()
					.array().array().value("b").endArray().endArray()
					.endArray().endObject().toString());
		} catch (JSONException e) {
			e.printStackTrace();
		}
	}

	/*
	{"recipe": {
	"cook_time": "3 hours",
	"ingredient": [
	    {
	        "amount": 4,
	        "content": "Water",
	        "state": "warm",
	        "unit": "dL"
	    },
	    {
	        "amount": 1,
	        "content": "Salt",
	        "unit": "teaspoon"
	    }
	],
	"instructions": {"step": [
	    "Knead thoroughly.",
	    "Knead again."
	]},
	"name": "bread",
	"prep_time": "5 mins",
	"title": "Basic bread"
	}}

	{"cook_time":"3 hours","prep_time":"5 mins","childNodes":[{"childNodes":["Basic bread"],"tagName":"title"},{"amount":4,"childNodes":["Water"],"unit":"dL","state":"warm","tagName":"ingredient"},{"amount":1,"childNodes":["Salt"],"unit":"teaspoon","tagName":"ingredient"},{"childNodes":[{"childNodes":["Knead thoroughly."],"tagName":"step"},{"childNodes":["Knead again."],"tagName":"step"}],"tagName":"instructions"}],"name":"bread","tagName":"recipe"}
	<recipe cook_time="3 hours" prep_time="5 mins" name="bread"><title>Basic bread</title><ingredient amount="4" unit="dL" state="warm">Water</ingredient><ingredient amount="1" unit="teaspoon">Salt</ingredient><instructions><step>Knead thoroughly.</step><step>Knead again.</step></instructions></recipe>

	[
	"recipe",
	{
	    "cook_time": "3 hours",
	    "name": "bread",
	    "prep_time": "5 mins"
	},
	[
	    "title",
	    "Basic bread"
	],
	[
	    "ingredient",
	    {
	        "amount": 4,
	        "state": "warm",
	        "unit": "dL"
	    },
	    "Water"
	],
	[
	    "ingredient",
	    {
	        "amount": 1,
	        "unit": "teaspoon"
	    },
	    "Salt"
	],
	[
	    "instructions",
	    [
	        "step",
	        "Knead thoroughly."
	    ],
	    [
	        "step",
	        "Knead again."
	    ]
	]
	]
	<recipe cook_time="3 hours" prep_time="5 mins" name="bread"><title>Basic bread</title><ingredient amount="4" unit="dL" state="warm">Water</ingredient><ingredient amount="1" unit="teaspoon">Salt</ingredient><instructions><step>Knead thoroughly.</step><step>Knead again.</step></instructions></recipe>
	*/
	public void testXML() {
		JSONArray jsonArray;
		JSONObject jsonObj;
		String str;
		str = "<recipe name=\"bread\" prep_time=\"5 mins\" cook_time=\"3 hours\">"
				+ " <title>Basic bread</title> "
				+ " <ingredient amount=\"4\" unit=\"dL\" state=\"warm\">Water</ingredient> "
				+ " <ingredient amount=\"1\" unit=\"teaspoon\">Salt</ingredient> "
				+ " <instructions> "
				+ " <step>Knead thoroughly.</step>"
				+ " <step>Knead again.</step> "
				+ " </instructions> "
				+ "</recipe> ";
		//XML转换成JSON对象
		try {
			jsonObj = XML.toJSONObject(str);

			System.out.println(jsonObj.toString(4));//JSON格式化输出
			System.out.println();

			jsonObj = JSONML.toJSONObject(str);
			System.out.println(jsonObj.toString());
			System.out.println(JSONML.toString(jsonObj));
			System.out.println();

			jsonArray = JSONML.toJSONArray(str);
			System.out.println(jsonArray.toString(4));
			System.out.println(JSONML.toString(jsonArray));
			System.out.println();
		} catch (JSONException e) {
			e.printStackTrace();
		}
	}

	/*
	{"list of lists": [
	[
	    1,
	    2
	],
	[
	    4,
	    5
	]
	]}
	<list of lists><array>1</array><array>2</array></list of lists><list of lists><array>4</array><array>5</array></list of lists>
	*/
	public void testJsonStr() {
		JSONObject jsonObj;
		String str;
		str = "{     \"list of lists\" : [         [1, 2],         [4, 5],     ] }";
		//以JSON串构造JSON对象
		try {
			jsonObj = new JSONObject(str);

			//JSON对象格式化输出
			System.out.println(jsonObj.toString(4));
			//JSON对象到XML的转换
			System.out.println(XML.toString(jsonObj));
		} catch (JSONException e) {
			e.printStackTrace();
		}
	}
}

class Obj implements JSONString {
	public String aString;
	public double aNumber;
	public boolean aBoolean;

	public Obj(String string, double n, boolean b) {
		this.aString = string;
		this.aNumber = n;
		this.aBoolean = b;
	}

	public double getNumber() {
		return this.aNumber;
	}

	public String getString() {
		return this.aString;
	}

	public boolean isBoolean() {
		return this.aBoolean;
	}

	public String getBENT() {
		return "All uppercase key";
	}

	public String getX() {
		return "x";
	}

	public String toJSONString() {
		return "{" + JSONObject.quote(this.aString) + ":"
				+ JSONObject.doubleToString(this.aNumber) + "}";
	}

	public String toString() {
		return this.getString() + " " + this.getNumber() + " "
				+ this.isBoolean() + "." + this.getBENT() + " " + this.getX();
	}
}
 

 

分享到:
评论
1 楼 itstarting 2010-01-13  
不错,正需要
官网上提供的比较乱

相关推荐

    用stanfordCoreNLP进行中文分词时出现json编码错误(csdn)————程序.pdf

    在使用stanfordCoreNLP的Python包`stanfordcorenlp`时,报出的错误`json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)`通常意味着在尝试解码JSON响应时遇到了问题。JSON(JavaScript Object...

    榆落微时光v1——1.0.39.rar

    5. **数据管理**:小程序使用JSON格式的本地存储,可以保存用户数据,但容量有限。对于更大的数据需求,通常会配合后端云服务进行数据交互。 6. **发布与更新**:小程序的发布需要经过平台审核,更新时一般无需用户...

    集成文件梳理——new.zip

    综上所述,"集成文件梳理——new.zip"涉及了软件工程中的多个方面,从代码组织、版本控制到测试和部署,每一个环节都是保证项目成功的关键。在处理这样的文件时,需仔细分析其内容,理解文件结构和用途,以便有效地...

    代码JSON——test_c#json_JSON_unity_

    在"代码JSON——test.txt"中,可能包含了示例代码,展示如何在实际项目中使用C#和Unity处理JSON数据。而"网站.txt"可能包含了一些参考资料链接,供开发者深入学习和解决问题。 五、注意事项 在使用JSON时,需要注意...

    微信小程序前端模板——民宿.zip

    它无需用户下载安装,只需在微信内通过扫描二维码或搜索即可打开使用,极大地节省了用户的手机内存,同时也提高了应用的触达速度和便利性。微信小程序的设计理念是“用完即走”,强调快速、便捷的用户体验。 本...

    IOS应用源码——TransWeb.rar

    9. **单元测试与集成测试**:源码可能包含测试代码,以确保应用功能的正确性,使用XCTest进行单元测试和集成测试。 10. **安全与隐私**:iOS应用需要遵循Apple的安全指南,如使用HTTPS加密网络通信,获取用户权限,...

    IOS应用源码——分类.rar

    在这个源码包中,我们可以深入学习到iOS应用开发的多个关键知识点: 1. **Objective-C或Swift编程**:作为iOS应用开发的两种主要语言,Objective-C和Swift各有特色。Objective-C基于C语言,语法较为复杂,但提供了...

    IOS应用源码——UITestApp.rar

    "IOS应用源码——UITestApp.rar" 是一个包含iOS应用的源代码压缩包,特别关注的是UI测试(User Interface Testing)方面。这个应用可能是一个用于演示或教学目的的实例,帮助开发者了解如何在iOS上使用Xcode的UI测试...

    安卓Android源码——weather.rar

    2. **数据解析**:从服务器获取的数据通常是JSON格式,开发者需要了解如何使用`Gson`、`Jackson`或`org.json`等库解析这些数据。解析后的数据可能被存储为自定义对象或数据结构。 3. **本地存储**:为了提高用户...

    IOS应用源码——trunk.rar

    "IOS应用源码——trunk.rar" 提供了一个完整的iOS应用项目源代码,它可能是为了教学、研究或者分享目的而发布的。在这个压缩包中,`trunk` 文件夹很可能是项目的主要根目录,包含了整个iOS应用的所有组成部分。下面...

    IOS应用源码——密码.zip

    XCTest是苹果提供的测试框架,开发者通常会使用它来编写测试用例。 通过对"密码.zip"中的源码进行详细研究,开发者可以学习到如何在iOS平台上实现安全的密码管理功能,掌握数据存储、加密、用户认证等关键技术,并...

    TypeScript使用详解(csdn)————程序.pdf

    这样,开发者可以更便捷地测试和调试TypeScript代码,而无需每次都进行编译操作。 总体来说,TypeScript为JavaScript提供了强大的类型系统和新特性支持,可以帮助开发者写出更高质量、更易于维护的代码,并简化大型...

    接口自动化测试 python+request+excel(csdn)————程序.pdf

    官方文档(https://docs.python.org/3/library/unittest.html)详细介绍了unittest的用法,包括如何创建测试类、定义测试方法以及运行测试套件。 而requests库则是Python中用来发送HTTP请求的库,支持GET、POST等多种...

    IOS应用源码——QQbiaoQing.rar

    10. **测试与调试**:源码可能包含单元测试代码,使用XCTest框架进行功能验证,以及调试信息,帮助开发者找出并修复问题。 11. **App审核与发布**:源码可能还包括Info.plist配置文件,该文件包含应用的元数据,...

    IOS应用源码——书架.zip

    13. **测试**:为了确保代码质量,开发者可能使用XCTest进行单元测试和UI测试,确保各个功能模块的正确性。 14. **CocoaPods或Carthage**:项目可能使用CocoaPods或Carthage这样的依赖管理工具来引入和管理第三方库...

    Spring Boot 2.x基础教程:使用MongoDB(csdn)————程序.pdf

    Spring Boot 2.x 教程中的MongoDB使用详解 MongoDB是一个流行的NoSQL数据库系统,设计为分布式存储,提供高性能和可伸缩性。它的数据结构以BSON(Binary JSON)为主,允许存储复杂的数据类型,特别适合Node.js应用...

    IOS应用源码——testcut.rar

    "IOS应用源码——testcut.rar" 提供了一个名为 "testcut" 的iOS应用的完整源代码,这对于我们深入学习iOS编程、Swift语言以及Apple的UIKit框架来说,是一个宝贵的资源。 源码分析通常包括以下几个关键部分: 1. **...

    阿里json解析包.7z

    这个压缩包"阿里json解析包.7z"包含了Fastjson的特定版本——fastjson-1.2.62.jar,这是一个Java可执行的JAR文件,可以直接引入到Java项目中使用。 Fastjson的核心功能包括JSON对象和Java对象之间的相互转换。它...

    IOS应用源码——Number.rar

    "IOS应用源码——Number.rar" 提供了一个名为 "Number" 的iOS应用的源代码,这为我们深入探究iOS应用开发提供了很好的学习材料。在这个项目中,我们可以期待看到如何在Swift或Objective-C中创建一个与数字相关的应用...

Global site tag (gtag.js) - Google Analytics