这个有点模仿于。google的json处理。
传进对象;传出json。
传进json;传出对象。
对于基本的简单对象例如:student
/**
* Student
*
* @author shanzhu
* @version 1.0 2011-10-17
*/
package json;
import java.io.Serializable;
public class Student implements Serializable {
/**
*
*/
private static final long serialVersionUID = 8424716517986346222L;
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
对于这些基本类型的pojo。我们可以采用反射的形式来生成以及解析成json对象或则java对象。
下面是一个test的入口。
/**
* json test
*
* @author shanzhu
* @version 1.0 2011-10-17
*/
package json;
import json.reflect.JsonReflect;
import net.sf.json.JSONObject;
public class JsonText {
/**
* @param args
*/
public static void main(String[] args) {
// 对象转化成json格式的
// Student student = new Student();
// student.setAge(10);
// student.setId(1);
// student.setName("bushyou");
// Map mapObject = (new JsonReflect<Student>(student)).Class2JsonObject();
// JSONObject jsonObject = new JSONObject();
// jsonObject.put("status", 200);
// jsonObject.put("data", mapObject);
// System.out.println(jsonObject.toString());
// json格式转化成对象的
String strObject = "{\"status\":200,\"data\":{\"id\":1,\"age\":10,\"name\":\"bushyou\"}}";
//生成json格式
JSONObject jsonObject1 = JSONObject.fromObject(strObject);
JSONObject jsonObject2 = (JSONObject) jsonObject1.get("data");
Student student = new Student();
student = new JsonReflect<Student>(student).JsonObject2Class(jsonObject2);
System.out.println(student.getName());
}
}
主要的处理以及解析的都在JsonReflect类中来处理。
/**
* 操作json格式的基础类
*
* @author shanzhu
* @version 1.0 2011-10-17
*/
package json.reflect;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import json.reflect.factory.IType;
import json.reflect.factory.JavaTypeFactory;
import net.sf.json.JSONObject;
public class JsonReflect<T> {
private static final String SERIAL_VERSION_UID = "serialVersionUID";
public Class classType;
private T t;
public JsonReflect(T t) {
this.t = t;
classType = t.getClass();
}
/**
* 将类转化成json对象
* @return
*/
public Map Class2JsonObject() {
Field[] fields = this.classType.getDeclaredFields();
String filedsName = "";
Object filedsValue = "";
Map map = new HashMap();
Field field = null;
for (int i = 0; i < fields.length; i++) {
field = fields[i];
field.setAccessible(true);
filedsName = field.getName();
if (SERIAL_VERSION_UID.equalsIgnoreCase(filedsName)) {
continue;
}
try {
filedsValue = field.get(t);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
map.put(filedsName,filedsValue);
field = null;
}
return map;
}
public T JsonObject2Class(JSONObject jsonObject){
T t = null;
Object obj = null;
try {
obj = classType.newInstance();
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}//通过class类反射一个对象实体
Field[] fields = this.classType.getDeclaredFields();
String filedsName = "";
Field field = null;
for (int i = 0; i < fields.length; i++) {
field = fields[i];
field.setAccessible(true);
filedsName = field.getName();
if (SERIAL_VERSION_UID.equalsIgnoreCase(filedsName)) {
continue;
}
String type = field.getType().getSimpleName(); //原始类型
IType typeObject =JavaTypeFactory.createType(type);
Object object = typeObject.createData(jsonObject.get(filedsName)+""); //生成的值。。用于反射
Class classType = typeObject.getClassType(); //生成的类型。。用于反射
try {
String filedsSet ="set" + filedsName.substring(0,1).toUpperCase()+ filedsName.substring(1);
Method m = this.classType.getDeclaredMethod(filedsSet,new Class[]{classType});
m.invoke(obj,object);
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
t = (T) obj;
return t;
}
}
下面是一个简单的工厂JavaTypeFactory,用于反射相关的值。
/**
* java 基本类型生成工厂方法
*
* @author shanzhu
* @version 1.0 2011-10-17
*/
package json.reflect.factory;
public class JavaTypeFactory {
public static IType createType(String type){
if (type==null || "".equals(type)) {
new IllegalAccessException("type is not can be null");
}
if ("int".equalsIgnoreCase(type) || "Integer".equalsIgnoreCase(type)) {
return new IntergetType();
}
if ("String".equalsIgnoreCase(type)) {
return new StringType();
}
if ("date".equalsIgnoreCase(type)) {
return new DateType();
}
return new StringType();
}
}
/**
* Integer
*
* @author shanzhu
* @version 1.0 2011-10-17
*/
package json.reflect.factory;
public class IntergetType implements IType {
@Override
public Object createData(String oldValue) {
// TODO Auto-generated method stub
return new Integer(oldValue);
}
@Override
public Class getClassType() {
// TODO Auto-generated method stub
return Integer.class;
}
}
/**
* Date
*
* @author shanzhu
* @version 1.0 2011-10-17
*/
package json.reflect.factory;
import java.util.Date;
public class DateType implements IType {
@Override
public Object createData(String oldValue) {
// TODO Auto-generated method stub
return new Date(oldValue);
}
@Override
public Class getClassType() {
// TODO Auto-generated method stub
return Date.class;
}
}
/**
* Long
*
* @author shanzhu
* @version 1.0 2011-10-17
*/
package json.reflect.factory;
public class LongType implements IType {
@Override
public Object createData(String oldValue) {
return new Long(oldValue);
}
@Override
public Class getClassType() {
// TODO Auto-generated method stub
return Long.class;
}
}
/**
* String
*
* @author shanzhu
* @version 1.0 2011-10-17
*/
package json.reflect.factory;
public class StringType implements IType{
public String createData(String oldValue) {
return new String(oldValue) ;
}
@Override
public Class getClassType() {
// TODO Auto-generated method stub
return String.class;
}
}
下面是接口。
/**
* 接口
*
* @author shanzhu
* @version 1.0 2011-10-17
*/
package json.reflect.factory;
public interface IType {
//设置数据
public Object createData(String oldValue);
public Class getClassType();
}
分享到:
相关推荐
要使用 `json-lib` 实现 JSON 与 Java 对象的互转,首先需要在项目中引入该库。如果你使用的是 Maven,可以在 `pom.xml` 文件中添加如下依赖: ```xml <groupId>net.sf.json-lib</groupId> <artifactId>json-lib...
1. **JSON与Java对象的互转**: - JSON对象可以映射为Java对象,如HashMap、ArrayList等。JSON字符串到Java对象的转换通常通过反序列化实现,而Java对象到JSON字符串的转换则称为序列化。 - json-lib库提供了一套...
Java对象与JSON之间的转换在现代Web开发中至关重要,因为它们是服务器端数据处理和客户端交互的主要格式。Gson是Google提供的一个开源库,专门用于在Java对象和JSON数据之间进行无缝转换。它以其强大、灵活和高效而...
在实际应用中,日期类型的处理往往是JSON与Java对象互转中的难点。Gson通过实现`JsonSerializer`和`JsonDeserializer`接口,允许开发者自定义日期类型的序列化和反序列化策略。例如: ```java public class ...
我们可能还会遇到`JSON.parse()`(将JSON字符串解析为Java对象)、`JSON.toJSON()`(将Java对象转换为JSON对象)等方法,这些都是Fastjson提供的便利工具,使得JSON对象在Java环境中的操作变得简单高效。 总结一下...
总结来说,`json-lib`是一个强大且易用的工具,它使得在Java中处理JSON变得简单。通过其提供的API,我们可以方便地进行JSON字符串与Java对象之间的双向转换,同时还能处理各种复杂的数据结构。在实际开发中,掌握...
2. 使用诸如net.sf.json JSONObject类(一个流行的Java库,用于处理JSON数据)来将JSON格式字符串转换为JSON对象。转换后,服务端可以通过指定的键(key)来获取JSON对象中的值。 3. 在Java客户端,调用WebService...
本篇将详细介绍使用Gson进行Java对象和Json对象互转的方法以及所需的jar包。 首先,要使用Gson库,你需要在项目中引入相关的jar包。根据描述,这里提供了一个压缩包,包含四个所需的jar包。这些jar包通常包括Gson的...
Jackson是Java领域最流行的JSON处理库之一,它提供了高效且灵活的API来实现JSON与Java对象之间的相互转换。本实例将详细介绍如何使用Jackson库进行JSON到Java对象的反序列化以及Java对象到JSON的序列化。 首先,...
本文将深入探讨`String`与JSON的互转方法,并提供一个简单的测试案例。 一、`String`转`JSON` 1. 使用`org.json`库 `org.json`库提供了一个名为`JSONObject`的类,可以将`String`转换为JSON对象。首先,确保你的...
在进行JSON与Java对象互转时,需要注意的是,Java对象的属性必须有对应的getter和setter方法,因为`JSONObject`依赖于Java的反射机制来读取和设置属性。此外,`JSONObject`在处理枚举类型时可能需要特别处理,通常会...
标题“JSON互转工具”指的是一个能够将JSON字符串与Java对象之间进行转换的工具或库。这通常涉及到序列化和反序列化的过程。序列化是将Java对象转换为JSON格式的字符串,而反序列化则是将JSON字符串解析成Java对象。...
Java JSON API是Java平台上的库,提供了处理JSON的能力,包括解析JSON字符串、生成JSON对象以及进行JSON与Java对象之间的转换。 在Java中,有多种实现JSON API的库,如Jackson、Gson、org.json和json-lib等。本篇...
可以处理简单java对象和格式正确的json字符串互相转换。 net.sf.json.JSONArray可以处理复杂的java集合对象和格式正确的json字符串互相转换. 1.json字符串转简单java对象 2.简单java对象转json字符串 3.json字符...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,但也使用了类似于C风格的语言,如JavaScript、Python、Java等。在Java开发中,JSON字符串与Java对象之间的相互...
总之,Java和JSON之间的互转是常见的开发任务。`org.json`库提供了一系列的工具类,使这个过程变得简单易行。无论是将Java对象、Map还是List转换为JSON,或者反过来将JSON解析回Java对象,都有相应的API支持。了解并...
Java提供了多种库来实现对象与JSON的互转,如Jackson、Gson、Fastjson等。这里我们将主要讨论这些工具类的使用方法以及它们在处理对象到JSON字符串和反向转换时的关键知识点。 1. Jackson库: Jackson是Java中非常...
总结,Android中的JSON转换通常依赖于如Gson这样的库,它们提供了方便的方法来在Java对象和JSON格式之间进行转换。通过创建工具类,我们可以简化代码并提高代码复用性。在实际项目中,还可以根据需求扩展`GsonUtil`...
本文将详细探讨Java中JSON与XML的互转,以及如何在实际开发中运用这些技术。 标题:“java json xml转换” 描述:“java版的json与xml之间的转换的实例demo” JSON和XML各有优缺点。JSON以其简洁、易于阅读和生成...
它使得在Java应用程序中处理JSON变得简单,无论是将JSON解析成Java对象,还是将Java对象序列化为JSON格式的字符串。在本文中,我们将深入探讨Gson解析器的工作原理以及如何利用它来实现JSON和实体类对象之间的互转。...