java 对象 与json字符串的相互转化

来源:互联网 发布:淘宝app怎么换皮肤 编辑:程序博客网 时间:2024/06/05 07:44

由于java是面向对象的语言,在view与Controller之间的交互上,不管是定义dto还是直接使用vo反正都是用的java对象,而由于ajax的兴起,加上很多比较成熟的ui框架(bootstrap,jquery easyui,extjs)等在数据显示上都需要使用json数据,所以掌握好java对象和json字符串之间的相互转化显得很有必要。(纯属个人理解)

首先jar包的导入:

首先定义一个User类:

public class User implements Serializable{  // 新建一个User 对象private int userId;private String userName;public int getUserId() {return userId;}public String getUserName() {return userName;}public void setUserId(int userId) {this.userId = userId;}public void setUserName(String userName) {this.userName = userName;}public User(int userId, String userName) {super();this.userId = userId;this.userName = userName;}public User() {super();// TODO Auto-generated constructor stub}}  
在主函数里进行转化的测试(写了几个简单的,其它的都差不多):

public class JsonTest {public static void main(String[] args) {// 将对象转化成json 字符串 : 使用 JSONObjectUser u=new User(1,"123");JSONObject jsonObject=new JSONObject();  //创建json对象jsonObject.element("user",u);           //加入元素 uSystem.out.println(jsonObject.toString());  //{"user":{"userId":1,"userName":"123"}}// 当然也可以直接得到 JSONObject 对象 //JSONObject json2=JSONObject.fromObject(u);// 下面将list(map,collection) 转化成json 数组User u1=new User(2,"123");List<User> users=new LinkedList<User>();users.add(u);users.add(u1);JSONArray  jarray=new JSONArray();jarray.addAll(users);System.out.println(jarray.toString());  //[{"userId":1,"userName":"123"},{"userId":2,"userName":"123"}]//当然也可以使用上面的方法:JSONObject jobject=new JSONObject();jobject.element("users", users);System.out.println(jobject.toString()); //{"users":[{"userId":1,"userName":"123"},{"userId":2,"userName":"123"}]}// 下面将JSON字符串转化成对象:JSONObject jsonObject3=JSONObject.fromObject("{\"userId\":3,\"userName\":\"123\"}");User u3=(User)jsonObject3.toBean(jsonObject3, User.class);  //User  必须要提供无参构造方法System.out.println("u3Name:"+u3.getUserName());  //u3Name:123//将json字符串转化成数组:JSONArray jarray2=JSONArray.fromObject("[{\"userId\":4,\"userName\":\"444\"},{\"userId\":5,\"userName\":\"555\"}]");@SuppressWarnings("deprecation")List<User> users2=jarray2.toList(jarray2, User.class);for(User uu:users2)System.out.println(uu.getUserName());  //444,555}}




0 0