`

json-lib 序列化和反序列化

    博客分类:
  • Java
阅读更多

可以使用json-lib来序列化java对象

依赖的jar包:


 如何使用json-lib来序列化java对象呢?

实例:

@Test
	public void test_serialize(){
		Class2 c=new Class2();
		List<Student>students=new ArrayList<Student>();
		Student student=new Student();
		Map<String, Object> attribute =new HashMap<String, Object>();
		attribute.put("p1", "v1");
		attribute.put("p2", "v2");
		student.setAttribute(attribute);
		students.add(student);
		c.setStudents(students);
		c.setClassName("计算机0705");
		JSONObject js = JSONObject.fromObject(c/*, jsonConfig*/);
		System.out.println(js.toString());
	}

 运行结果如下:

 

{"classAttribute":null,"className":"计算机0705","count":0,"students":[{"addrr":null,"age":0,"attribute":{"p2":"v2","p1":"v1"},"hobby":"","name":""}]}

 

 

实例:

@Test
	public void test_serialize2(){
		Class2 c=new Class2();
		List<Student>students=new ArrayList<Student>();
		Student student=new Student();
		Map<String, Object> attribute =new HashMap<String, Object>();
		attribute.put("p1", "v1");
		attribute.put("p2", "v2");
		student.setAttribute(attribute);
		students.add(student);
		c.setStudents(students);
		c.setClassName("计算机0705");
		
		Map<String, Object> classAttribute =new HashMap<String, Object>();
		classAttribute.put("pp1", "vv1");
		classAttribute.put("pp2", "vv2");
		
		
		Teacher t=new Teacher();
		t.setName("熊应标");
		t.setTitle("语文老师");
		
		c.setClassAttribute(classAttribute);
//		One2One one=new One2One();
//		one.setC(c);
//		one.setT(t);
		
		JSONObject js = JSONObject.fromObject(c/*, jsonConfig*/);
		System.out.println(js.toString());
	}

 运行结果如下:

 

{"classAttribute":{"pp1":"vv1","pp2":"vv2"},"className":"计算机0705","count":0,"students":[{"addrr":null,"age":0,"attribute":{"p2":"v2","p1":"v1"},"hobby":"","name":""}]}

 

如何使用json-lib反序列化(把string转化为Java对象)?

参考:http://hw1287789687.iteye.com/admin/blogs/1993048

实例:

@Test
	public  void test_reserialize(){
//		String jsonInput="{\"className\":\"计算机0705\",\"count\":0,\"students\":[{\"addrr\":null,\"age\":0,\"hobby\":\"\",\"name\":\"\"}]}";
		String jsonInput="{\"classAttribute\":{\"pp1\":\"vv1\",\"pp2\":\"vv2\"},\"className\":\"计算机0705\",\"count\":0,\"students\":[{\"addrr\":null,\"age\":0,\"attribute\":{\"p2\":\"v2\",\"p1\":\"v1\"},\"hobby\":\"\",\"name\":\"\"}]}";
		JSONObject js = JSONObject.fromObject(jsonInput);
		
		JsonConfig jsonConfig = new JsonConfig();

		jsonConfig.setRootClass(Class2.class);
		Map<String, Class> classMap = new HashMap<String, Class>();
		classMap.put("students", Student.class); // 指定JsonRpcRequest的request字段的内部类型
		jsonConfig.setClassMap(classMap);
		
		
		
		Class2 one = (Class2) JSONObject.toBean(js, jsonConfig/*java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to*/);
		System.out.println(one.getClassName());
		Map<String, Object> attribute =one.getStudents().get(0).getAttribute();
		System.out.println(attribute);
		
	}

 运行结果:

计算机0705

{p2=v2, p1=v1}

 

序列化时如何删除属性值为null的属性

参考:

http://stackoverflow.com/questions/8025852/how-to-exclude-properties-from-bean-to-json-at-runtime

 

http://sourceforge.net/p/json-lib/discussion/587134/thread/a82914d9/

下面的事不合要求的:

{"addrr":{"country":"中国","state":"湖北省","street":"清河"},"age":25,"hobby":"","name":"黄威"}

hobby的值为空,应该被过滤掉的。

解决方法:

 

JsonConfig jsonConfig = new JsonConfig();

       jsonConfig.setJsonPropertyFilter(new PropertyFilter() {

           publicboolean apply(Object source, String name, Object value) {

              // System.out.println(name);

              // System.out.println(value);

              if (value == null || (value instanceof String)

                     && ((String) value).equals("")) {

                  returntrue;

              }

              returnfalse;

           }

       });

       JSONObject js = JSONObject.fromObject(student, jsonConfig);

 

 参考:http://hw1287789687.iteye.com/blog/1997956

源代码见附件

 

  • 大小: 2.1 KB
0
0
分享到:
评论

相关推荐

    json-lib-2.4-jdk15.jar下载

    3. 支持注解:支持@JSON、@JSONIgnore等注解配置对象的序列化和反序列化。 4. 支持流:除了支持对象/JSON与字符串的相互转换,也支持与InputStream/OutputStream的相互转换,处理大数据时比较有用。 5. 无依赖:json-lib...

    json-lib-2.4-jdk15.jar

    json-lib是一个Java库,它提供了一种方便的方式来序列化和反序列化Java对象为JSON格式,以及将JSON数据转换回Java对象。 json-lib-2.4-jdk15.jar是json-lib的一个特定版本,适用于JDK 1.5环境。这个版本的库包含了...

    json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar

    在Java世界里,`json-lib-2.1.jar` 是一个用于处理JSON的库,它提供了一系列的方法来将Java对象转换为JSON格式,以及将JSON字符串反序列化回Java对象。这个库支持多种Java类型,包括基本类型、集合、Map、自定义Java...

    json-lib-2.2.2-jdk15.jar

    1. **JSON序列化与反序列化**:json-lib允许将Java对象转换为JSON字符串,反之亦然。例如,你可以将一个Java的HashMap转换成JSON格式,便于在网络上传输,或者将接收到的JSON字符串解析成Java对象,便于进一步处理。...

    json-lib-2.2.3-jdk15.jar

    3. 序列化和反序列化:通过`fromObject()`和`toObject()`方法将Java对象序列化为JSON字符串,或从JSON字符串反序列化回Java对象。 4. 处理复杂结构:对于包含嵌套对象和数组的复杂结构,JSON-lib也能轻松应对,只需...

    json-lib应用所有jar

    JSON-lib是Java平台上的一个库,它提供了一种方便的方式来序列化和反序列化Java对象为JSON格式,以及从JSON字符串恢复Java对象。这个库在处理JSON数据时非常实用,特别是对于那些需要在服务器端和客户端之间进行数据...

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

    2. **序列化和反序列化**:JSON-lib提供了将Java对象转换为JSON字符串(序列化)的方法,以及将JSON字符串解析回Java对象(反序列化)的API。这在Java应用程序中与服务器或客户端进行数据交换时非常有用。 3. **...

    json-lib jar和所有依赖的jar

    2. 将JSON字符串反序列化回对应的Java对象。 3. 提供了多种数据类型转换的API,支持不同数据结构间的转换。 4. 支持XML与JSON之间的转换,方便跨平台数据交互。 5. 兼容多种版本的Java,包括Java SE和Java EE环境。 ...

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

    5. **处理复杂类型**:对于复杂的Java对象,如自定义类,可以使用`JSONSerializer`进行序列化和反序列化。 6. **错误处理**:在处理JSON数据时,需要捕获可能抛出的异常,如`JSONException`。 在页面传值场景下,...

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

    `json-lib`是一个Java库,它提供了将Java对象转换为JSON格式,以及从JSON字符串反序列化回Java对象的功能。`json-lib-2.3-jdk15`是这个库的一个特定版本,兼容JDK 1.5,这意味着它可以在运行JDK 1.5或更高版本的Java...

    json-lib-2.3.jar

    4. 如果需要将JSON字符串反序列化回Java对象,可以使用`JSONObject.toBean()`或`JSONArray.toList()`方法。 在项目中,`lib`目录下的json-lib-2.3.jar文件应当被正确地添加到构建路径或依赖管理中,以确保程序能够...

    json-lib.jar

    JSON-lib.jar是Java平台上的一个库,用于处理JSON数据,特别适用于Java开发者在他们的应用程序中实现JSON的序列化和反序列化。 在Java中,处理JSON通常涉及两个主要任务:将Java对象转换为JSON字符串(序列化),...

    json-lib-2.3-jdk15基础jar包合辑

    - **性能提升**:相比早期版本,2.3版可能进行了性能优化,提高了JSON序列化和反序列化的速度。 - **源码包含**:提供的jar包中包含了源码,开发者可以查看和学习内部实现,有助于理解和定制功能。 ### 使用场景 - ...

    json-lib-2.4-jdk15.jar及其相关依赖

    3. **反序列化**: 同样,`json-lib`也提供了反序列化功能,可以将JSON字符串转换回Java对象。例如: ```java String jsonString = "{\"name\":\"张三\",\"age\":30}"; Person person = (Person) JSONObject.toBean...

    json-lib 2.4 的 jar 包

    在Java中,JSON库如json-lib 2.4可以帮助开发者有效地处理JSON数据,进行数据的序列化与反序列化操作。本文将深入探讨json-lib 2.4这个jar包在Java开发中的应用。 json-lib是一个Java库,它提供了多种Java集合(如...

    json-lib所用的jar包

    综上所述,`json-lib`依赖于这些库来提供完整的JSON转换功能,从Java对象到JSON字符串的序列化,以及从JSON字符串到Java对象的反序列化。在实际开发中,通过这些库的配合,开发者可以轻松地在服务器和客户端之间传递...

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

    这对于开发人员来说是非常有用的,因为它允许他们在Java程序中轻松地序列化和反序列化数据。 在Java中,使用JSON-Lib进行JSON操作主要包括以下几个核心步骤: 1. **序列化(Serialization)**:将Java对象转换为...

    ezmorph-1.0.6.jar和json-lib-2.2.2-jdk15.rar

    - **json-lib标签**:代表JSON操作,如序列化和反序列化Java对象到JSON格式。 - **jdk15标签**:提示这两个库的兼容性,它们能在Java 1.5及以上的环境中运行。 5. **文件名列表**:压缩包内包含的"ezmorph-1.0.6....

    json-lib-2.4-jdk15.jar所需全部JAR包_JSON_

    1. **Jackson或Gson库**:这两个是其他流行的JSON库,可能会被`json-lib`用作底层实现的一部分,提供JSON序列化和反序列化的功能。 2. **Eclipse Collections**:可能用于提供高效的数据结构,如集合和映射,用于...

Global site tag (gtag.js) - Google Analytics