`

如何使用JSON-LIB

阅读更多

1,数组,集合转换为JSON

如果要将数组,集合转换为JSON,那么可以JSONArray.fromObject()方法来实现,同时也可以使用JSONSerializer.toJSON()来做到。

// 数组
boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray = JSONArray.fromObject(boolArray);
assertEquals("[true,false,true]", jsonArray.toString());
// 集合
List<String> list = new ArrayList<String>();
list.add("first");
list.add("second");
JSONArray jsonArray = JSONArray.fromObject(list);
assertEquals("[\"first\",\"second\"]", jsonArray.toString());

JSONSerializer.toJSON()方法的例子 

// 数组
boolean[] boolArray = new boolean[] { true, false, true };
		JSON json = JSONSerializer.toJSON(boolArray);
		assertEquals("[true,false,true]", json.toString());
// 集合
List<String> list = new ArrayList<String>();
		list.add("first");
		list.add("second");
		JSON json = JSONSerializer.toJSON(list);
		assertEquals("[\"first\",\"second\"]", json.toString());

 

2,Map,JAVA BEAN转换为JSON

如果要将Map,JAVA BEAN转换为JSON,那么可以JSONObject.fromObject()方法来实现,同时也可以使用JSONSerializer.toJSON()来做到。

//MAP
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "json");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
map.put("arr", new String[] { "a", "b" });
map.put("func", "function(i){ return this.arr[i]; }");
JSONObject jsonObject = JSONObject.fromObject(map);
assertEquals(
        "{\"arr\":[\"a\",\"b\"],\"int\":1,\"name\":\"json\",\"func\":function(i){ return this.arr[i]; },\"bool\":true}",
        jsonObject.toString());

//JAVA BEAN
User user = new User();
user.setName("Jimmy Liu");
user.setAge(28);
user.setAddresses(new String[] { "shenzhen,changsha" });
User friend = new User();
friend.setName("Eric Liu");
friend.setAge(30);
friend.setAddresses(new String[] { "shenzhen,nanchange" });
List<User> friends = new ArrayList<User>();
friends.add(friend);
user.setFriends(friends);
JSONObject jsonObject = JSONObject.fromObject(user);
assertEquals(
        "{\"friends\":[{\"friends\":[],\"age\":30,\"name\":\"Eric Liu\",\"addresses\":[\"shenzhen,nanchange\"],\"func1\":function(data){ alert(data); },\"func2\":function(data){ return data; }}],\"name\":\"Jimmy Liu\",\"age\":28,\"addresses\":[\"shenzhen,changsha\"],\"func1\":function(data){ alert(data); },\"func2\":function(data){ return data; }}",
        jsonObject.toString());

 

3,JSON转换为动态BEAN,特定BEAN

如果要将JSON转换为动态BEAN,特定BEAN,那么可以JSONObject.toBean()方法来实现

//转换为动态BEAN
String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";
JSONObject jsonObject = JSONObject.fromObject(json);
Object bean = JSONObject.toBean(jsonObject);
assertEquals(jsonObject.get("name"), PropertyUtils.getProperty(bean,
        "name"));
assertEquals(jsonObject.get("bool"), PropertyUtils.getProperty(bean,
        "bool"));
assertEquals(jsonObject.get("int"), PropertyUtils.getProperty(bean,
        "int"));
assertEquals(jsonObject.get("double"), PropertyUtils.getProperty(bean,
        "double"));
assertEquals(jsonObject.get("func"), PropertyUtils.getProperty(bean,
        "func"));
List expected = JSONArray.toList(jsonObject.getJSONArray("array"));
assertEquals(expected.size(), ((List) PropertyUtils.getProperty(bean,
        "array")).size());
//转换为特定BEAN
String json = "{\"friends\":[],\"name\":\"Jimmy Liu\",\"age\":28,\"addresses\":[\"shenzhen,changsha\"],\"func1\":function(data){ alert(data); },\"func2\":function(data){ return data; }}";
JSONObject jsonObject = JSONObject.fromObject(json);
User user = (User) JSONObject.toBean(jsonObject, User.class);
assertEquals(jsonObject.get("name"), user.getName());
assertEquals(jsonObject.get("age"), user.getAge());
assertEquals(jsonObject.get("func1"), user.getFunc1());
List expected = JSONArray.toList(jsonObject.getJSONArray("addresses"));
assertEquals(expected.size(), user.getAddresses().length);
// 在JSON转换为Bean时,如果bean包括集合的属性且集合包括其他JAVA BEAN,默认情况下,JSONLIB将转为动态BEAN
json = "{'roleName':'administrator','privilegeList':[{'privilegeName':'system-manager'},{'privilegeName':'supplier-manager'}]}";
Map<String, Object> classMap = new HashMap<String, Object>();
classMap.put("privilegeList", Privilege.class);
Role role = (Role) JSONObject.toBean(JSONObject.fromObject(json),
        Role.class, classMap);
jsonObject = JSONObject.fromObject(json);
assertEquals(jsonObject.get("roleName"), role.getRoleName());
List privilegeList = JSONArray.toList(jsonObject
        .getJSONArray("privilegeList"));
assertEquals(privilegeList.size(), role.getPrivilegeList().size());
assertEquals(PropertyUtils.getProperty(privilegeList.get(0),
        "privilegeName"), role.getPrivilegeList().get(0)
        .getPrivilegeName());

 

 4,JSON TO XML

可以利用XMLSerializer.write()方法将JSON转化为XML,同时利用的Setter方法控制XML的输出,比如,你能够改变XML的根元素,你可以注册,管理namespaces ,还可以向XML增加属性。

 

//Boolean
JSONObject json = new JSONObject(true);
String xml = new XMLSerializer().write(json);
System.out.println(xml);
//Object
JSONObject json = JSONObject
		        .fromObject("{\"privilegeName\":\"system-manager\"}");
XMLSerializer xmlSerializer = new XMLSerializer();
xmlSerializer.setObjectName("privilege");
String xml = xmlSerializer.write(json);
System.out.println(xml);
//Array
JSONArray json = JSONArray.fromObject("[1,2,3]");
XMLSerializer xmlSerializer = new XMLSerializer();
xmlSerializer.setArrayName("array");
xmlSerializer.setElementName("element");
String xml = xmlSerializer.write(json);
System.out.println(xml);


5,XML To JSON

XMLSerializer.read()方法将XML转化为JSON

JSONObject json = (JSONObject) new XMLSerializer()
		        .read("<?xml version=\"1.0\" encoding=\"UTF-8\"?><o><privilegeName type=\"string\">system-manager</privilegeName></o>" );  
System.out.println( json );

 

6,测试用到的JAVA BEAN,去除了Getter,Setter方法

public class User {
	private String name;
	private Integer age;
	private String[] addresses;
	private List<User> friends;
	private String func1 = "function(data){ alert(data); }";
	private JSONFunction func2 = new JSONFunction(new String[] { "data" },
	        "return data;");
}

public class Role {
	private String roleName;
	private List<Privilege> privilegeList;
}

public class Privilege {
	private String privilegeName;
}
 
7,maven依赖
<dependency>  
	<groupId>net.sf.json-lib</groupId>  
	<artifactId>json-lib</artifactId>  
	<version>2.4</version>  
	<classifier>jdk15</classifier>  
</dependency>
<dependency>
	<groupId>xom</groupId>
	<artifactId>xom</artifactId>
	<version>1.1</version>
</dependency>
 

 

分享到:
评论

相关推荐

    使用json-lib实现json与Java对象的互转

    要使用 `json-lib` 实现 JSON 与 Java 对象的互转,首先需要在项目中引入该库。如果你使用的是 Maven,可以在 `pom.xml` 文件中添加如下依赖: ```xml &lt;groupId&gt;net.sf.json-lib&lt;/groupId&gt; &lt;artifactId&gt;json-lib...

    json-lib-2.4-jdk15.jar

    json-lib-2.4-jdk15.jar是json-lib的一个特定版本,适用于JDK 1.5环境。这个版本的库包含了一系列API和实现,使得开发人员能够无缝地在Java应用中使用JSON。它支持多种Java对象类型,包括Map、List、Set、自定义Java...

    json-lib应用所有jar

    综上所述,JSON-lib作为一个强大的Java JSON处理库,极大地简化了JSON在Java开发中的使用。无论是在简单的数据交换还是复杂的数据结构处理中,都能发挥出其高效、灵活的特点。如果你正在寻找一个可靠的Java JSON解决...

    json-lib-2.3.jar

    json-lib-2.3.jar是这个库的一个版本,用于支持将Java对象转换成JSON格式和将JSON数据反序列化为Java对象。 标题中提到的"json-lib-2.3.jar"是json-lib库的一个具体实现,主要包含了一系列处理JSON的类和方法。这个...

    json-lib-2.4-jdk15及其依赖jar包

    JSON-Lib-2.4-jdk15是JSON-Lib的一个特定版本,它针对JDK 1.5进行了优化,以适应该版本的Java环境。这个库包含了处理JSON的多种功能,包括将Java对象转换为JSON字符串,以及将JSON文本解析回相应的Java对象。这对于...

    json-lib-2.4 jar 程序文件

    在使用`json-lib-2.4 jar`之前,需要将其添加到项目的类路径中。这通常通过在构建工具(如Maven或Gradle)的依赖管理中配置相关依赖来完成,或者将jar文件复制到项目lib目录并手动设置。对于不使用构建工具的项目,...

    使用json-lib将java对象转换成json字符串

    它提供了多种版本支持不同的JDK,如本例中的json-lib-2.2.3-jdk15.jar适用于JDK1.5。 - json-lib依赖于其他几个Apache Commons库,如`commons-lang-2.4.jar`、`commons-beanutils-1.8.0.jar`、`commons-collections...

    使用json-lib解析json所需要的jar

    使用json-lib解析json所需要的jar,包括: commons-beanutils-1.7.0.jar、commons-collections-3.2.jar、 commons-lang-2.4.jar、commons-logging-1.1.jar、 ezmorph-1.0.4.jar、json-lib-2.2.2-jdk15.jar

    json-lib-2.4-jdk15.jar下载

    json-lib-2.4-jdk15.jar下载,json-lib是一款简单易用的Java JSON库。它可以将Java对象转换成JSON字符串,也可以将JSON字符串转换成Java对象。json-lib体积小、无依赖,性能表现也不错,适合在各种Java项目中使用。 ...

    json-lib 2.4 的 jar 包

    通过引入`json-lib-2.4-jdk15.jar`,开发者可以在项目中轻松地集成JSON操作。 1. **JSON对象与Java对象的转换:** - 序列化:将Java对象转换为JSON字符串。例如,一个User类的对象可以通过json-lib转化为JSON格式...

    json-lib-2.4-jdk15和全部依赖jar包

    `json-lib-2.4-jdk15`是JSON库的一个特定版本,专为JDK 1.5设计,确保在该环境下能够正常运行。 `json-lib`库主要包含以下组件和功能: 1. **JSON转换**:`json-lib`提供了将Java对象如Map、List、自定义类等转换...

    json-lib-2.2.2-jdk15.jar

    json-lib-2.2.2-jdk15.jar是JSON库的一个版本,特别针对Java 1.5(JDK 1.5)进行了优化。这个压缩包包含了json-lib库的二进制文件,用于在Android和Java平台上解析和生成JSON数据。尽管这个版本是针对JDK 1.5,但...

    json-lib 需要的所有jar包

    在Java项目中,将这个jar包添加到项目的类路径(Classpath)中,就可以使用Json-lib提供的API进行JSON操作,比如将Java对象转换为JSON字符串,或将JSON字符串解析为Java对象。 使用Json-lib的一些关键知识点包括: ...

    json-lib-2.4和相应的依赖包

    在实际开发中,json-lib-2.4的使用通常涉及以下步骤: 1. **导入依赖**:将json-lib-2.4的jar包添加到项目的类路径中,或者在Maven或Gradle等构建工具中声明依赖。 2. **创建JSON对象**:使用`...

    json-lib-2.3-jdk15开发包和所有依赖包

    `json-lib-2.3-jdk15`是这个库的一个特定版本,兼容JDK 1.5,这意味着它可以在运行JDK 1.5或更高版本的Java环境中使用。 在Java开发中,`json-lib`库提供了以下关键功能: 1. **JSON对象的创建与解析**:通过`...

    json-lib-2.2.3-jdk15.jar

    5. **依赖管理**:`json-lib-2.2.3-jdk15.jar`可能包含了其运行所需的其他依赖库,这使得开发者在使用时无需额外配置这些依赖,简化了项目的构建过程。 6. **多平台支持**:作为Java库,JSON-lib可以运行在任何支持...

    json-lib jar和所有依赖的jar

    在文件列表中的"jsonlib需要jar包",这可能是指包含了`json-lib`库及其所有依赖的JAR文件。在实际项目中,将这些JAR文件添加到项目的类路径(classpath)中,就可以使用`json-lib`提供的功能,而无需通过Maven或其他...

    使用json-lib-2.2.2-jdk15.jar所要用到的jar包

    json-lib-2.2.3-jdk15.jar commons-beanutils-1.7.0.jar commons-httpclient-3.1.jar commons-lang-2.3.jar commons-logging-1.1.1.jar commons-collections-3.2.1.jar ezmorph-1.0.3.jar 如果不关联这些包,则会...

    json-lib-2.1-jdk15.jar

    "json-lib-2.1-jdk15.jar" 是一个针对Java 1.5版本优化的JSON库实现,由json-lib项目提供。这个特定的版本(2.1)表明它是该库的一个稳定版本,适用于Java 1.5及更高版本的环境。这个JAR(Java Archive)文件包含了...

    JSON-lib包json-lib-0.8.jar和json-lib-0.9.jar包

    标题中的"json-lib-0.8.jar"和"json-lib-0.9.jar"代表了JSON-lib的不同版本。每个版本可能包含一些新特性、修复的错误或者性能改进。例如,从0.8到0.9的升级,可能意味着开发团队已经对库进行了一些优化,增加了新的...

Global site tag (gtag.js) - Google Analytics