Jason 和 Java 对象转化示例

 

Jason 和 Java 对象转化示例

 

1.工程

2.代码:

JsonUtil.java

复制代码
package com.my.json;

import java.util.ArrayList;
import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JsonUtil {

    /**
     * 从一个JSON 对象字符格式中得到一个java对象
     * 
     * @param jsonString
     *            json字符串
     * 
     * @param pojoCalss
     *            java对象的class
     * 
     * @return
     */

    public static Object jsonString2Object(String jsonString, Class pojoCalss) {

        Object pojo;

        JSONObject jsonObject = JSONObject.fromObject(jsonString);

        pojo = JSONObject.toBean(jsonObject, pojoCalss);

        return pojo;

    }

    /**
     * 
     * 将java对象转换成json字符串<br>
     * 支持复杂类型:Java bean 中既有属性又有list
     * 
     * @param javaObj
     * 
     * @return
     */

    public static String object2JsonString(Object javaObj) {

        JSONObject json;

        json = JSONObject.fromObject(javaObj);

        return json.toString();

    }



    /**
     * 
     * 从json对象集合表达式中得到一个java对象列表
     * 
     * @param jsonString
     * 
     * @param pojoClass
     * 
     * @return
     */

    public static List jsonList2JavaList(String jsonString, Class pojoClass) {

        JSONArray jsonArray = JSONArray.fromObject(jsonString);

        JSONObject jsonObject;

        Object pojoValue;

        List list = new ArrayList();

        for (int i = 0; i < jsonArray.size(); i++) {

            jsonObject = jsonArray.getJSONObject(i);

            pojoValue = JSONObject.toBean(jsonObject, pojoClass);

            list.add(pojoValue);

        }

        return list;

    }

    /**
     * 
     * 从json对象集合表达式中得到一个java对象列表
     * 
     * @param jsonString
     * 
     * @param pojoClass
     * 
     * @return
     */

    public static String javaList2JsonList(List list) {

        JSONArray jsonArray = JSONArray.fromObject(list);
        return jsonArray.toString();
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**<br>* Json转化为map<br>*/ <br> public  static  Map<String, Object> parseJSON2Map(String jsonStr){ 
         Map<String, Object> map = new  HashMap<String, Object>(); 
         //最外层解析 
         JSONObject json = JSONObject.fromObject(jsonStr); 
         for (Object k : json.keySet()){ 
             Object v = json.get(k);  
             //如果内层还是数组的话,继续解析 
             if (v instanceof  JSONArray){ 
                 List<Map<String, Object>> list = new  ArrayList<Map<String,Object>>(); 
                 Iterator<JSONObject> it = ((JSONArray)v).iterator(); 
                 while (it.hasNext()){ 
                     JSONObject json2 = it.next(); 
                     list.add(parseJSON2Map(json2.toString())); 
                
                 map.put(k.toString(), list); 
             } else 
                 map.put(k.toString(), v); 
            
        
         return  map; 
     }
 
         

  

}
复制代码

Person.java

复制代码
package com.my.json;

import java.util.ArrayList;
import java.util.List;

public class Person {

    private String name;

    private List<Person> list = new ArrayList<Person>();

    public List<Person> getList() {
        return list;
    }

    public void setList(List<Person> list) {
        this.list = list;
    }

    @Override
    public String toString() {
        return "Person [name=" + name + ", num=" + num + ", sex=" + sex
                + ", age=" + age + "]";
    }

    private int num;
    private String sex;
    private int age;

    public Person() {
        // TODO Auto-generated constructor stub
    }

    public Person(String name, int num, String sex, int age) {
        super();
        this.name = name;
        this.num = num;
        this.sex = sex;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

}
复制代码

Test.java

复制代码
package com.my.json;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONObject;

public class Test {
    public static void main(String[] args) {

        // 将一个java对象转换为Json字符串
        Person p = new Person("gu1", 123, "male", 23);
        String str = JsonUtil.object2JsonString(p);
        System.out.println(str);

        // 将一个JSON字符串转化为Java对象
        String s = "{\"age\":23,\"name\":\"gu1\",\"num\":123,\"sex\":\"male\"}";
        Person p2 = (Person) JsonUtil.jsonString2Object(s, Person.class);
        System.out.println(p2);

        // 将一个对象列表转化为JSON列表
        List<Person> list = new ArrayList<Person>();
        for (int i = 0; i < 5; i++) {
            Person persion = new Person("zhang" + i, 1 + i, "man" + i, 1 + i);
            list.add(persion);
        }
        String jsonList = JsonUtil.javaList2JsonList(list);
        System.out.println(jsonList);

        // 将一个JSON列表转化为Java列表
        String jst = "[{\"age\":1,\"list\":[],\"name\":\"zhang0\",\"num\":1,\"sex\":\"man0\"},{\"age\":2,\"list\":[],\"name\":\"zhang1\",\"num\":2,\"sex\":\"man1\"},{\"age\":3,\"list\":[],\"name\":\"zhang2\",\"num\":3,\"sex\":\"man2\"},{\"age\":4,\"list\":[],\"name\":\"zhang3\",\"num\":4,\"sex\":\"man3\"},{\"age\":5,\"list\":[],\"name\":\"zhang4\",\"num\":5,\"sex\":\"man4\"}]";
        List<Person> l = (List<Person>) JsonUtil.jsonList2JavaList(jst,
                Person.class);
        System.out.println(l.size());

        // 复杂类型转JSON:Java bean 中既有属性又有list(项目中经常见到)
        List<Person> list2 = new ArrayList<Person>();
        for (int i = 0; i < 10; i++) {
            Person persion = new Person("zhang" + i, 1 + i, "man" + i, 1 + i);
            list2.add(persion);
        }
        Person me = new Person("zhang", 1, "man", 1);
        me.setList(list2);

        String str2 = JsonUtil.object2JsonString(me);
        System.out.println(str2);

        // 复杂类型转Java:JSON 中既有属性又有list(项目中经常见到)
        String ss = "{\"age\":1,\"list\":[{\"age\":1,\"list\":[],\"name\":\"zhang0\",\"num\":1,\"sex\":\"man0\"},{\"age\":2,\"list\":[],\"name\":\"zhang1\",\"num\":2,\"sex\":\"man1\"},{\"age\":3,\"list\":[],\"name\":\"zhang2\",\"num\":3,\"sex\":\"man2\"},{\"age\":4,\"list\":[],\"name\":\"zhang3\",\"num\":4,\"sex\":\"man3\"},{\"age\":5,\"list\":[],\"name\":\"zhang4\",\"num\":5,\"sex\":\"man4\"},{\"age\":6,\"list\":[],\"name\":\"zhang5\",\"num\":6,\"sex\":\"man5\"},{\"age\":7,\"list\":[],\"name\":\"zhang6\",\"num\":7,\"sex\":\"man6\"},{\"age\":8,\"list\":[],\"name\":\"zhang7\",\"num\":8,\"sex\":\"man7\"},{\"age\":9,\"list\":[],\"name\":\"zhang8\",\"num\":9,\"sex\":\"man8\"},{\"age\":10,\"list\":[],\"name\":\"zhang9\",\"num\":10,\"sex\":\"man9\"}],\"name\":\"zhang\",\"num\":1,\"sex\":\"man\"}";
        Map map = (Map)JSONObject.fromObject(ss); 
        
        System.out.println("------------------------------");
        System.out.println(map);
        String name = (String)map.get("name");
        int num = (Integer)map.get("num");
        String sex = (String)map.get("sex");
        int age = (Integer)map.get("age");
        System.out.println("name="+name);
        System.out.println("num="+"num");
        System.out.println("sex="+"sex");
        System.out.println("age="+"age");
        System.out.println("list="+map.get("list"));
        //获取list字符串,再转化为Java 对象,其实是再次构建成Java bean
        String listStr = map.get("list").toString();//一定要用toString,不能强转
        List<Person> ll = JsonUtil.jsonList2JavaList(listStr, Person.class);
        //构建新的bean:不知是否有其他方案,根据需要是否构建
        Person pp = new Person(name,num,sex,age);
        pp.setList(ll);
        //输出bean
        for (Person ps : pp.getList())
        {
            System.out.println(ps.getName());
        }
            
    }
}
复制代码

输出:

{"age":23,"list":[],"name":"gu1","num":123,"sex":"male"}
Person [name=gu1, num=123, sex=male, age=23]
[{"age":1,"list":[],"name":"zhang0","num":1,"sex":"man0"},{"age":2,"list":[],"name":"zhang1","num":2,"sex":"man1"},{"age":3,"list":[],"name":"zhang2","num":3,"sex":"man2"},{"age":4,"list":[],"name":"zhang3","num":4,"sex":"man3"},{"age":5,"list":[],"name":"zhang4","num":5,"sex":"man4"}]
5
{"age":1,"list":[{"age":1,"list":[],"name":"zhang0","num":1,"sex":"man0"},{"age":2,"list":[],"name":"zhang1","num":2,"sex":"man1"},{"age":3,"list":[],"name":"zhang2","num":3,"sex":"man2"},{"age":4,"list":[],"name":"zhang3","num":4,"sex":"man3"},{"age":5,"list":[],"name":"zhang4","num":5,"sex":"man4"},{"age":6,"list":[],"name":"zhang5","num":6,"sex":"man5"},{"age":7,"list":[],"name":"zhang6","num":7,"sex":"man6"},{"age":8,"list":[],"name":"zhang7","num":8,"sex":"man7"},{"age":9,"list":[],"name":"zhang8","num":9,"sex":"man8"},{"age":10,"list":[],"name":"zhang9","num":10,"sex":"man9"}],"name":"zhang","num":1,"sex":"man"}
------------------------------
{"age":1,"list":[{"age":1,"list":[],"name":"zhang0","num":1,"sex":"man0"},{"age":2,"list":[],"name":"zhang1","num":2,"sex":"man1"},{"age":3,"list":[],"name":"zhang2","num":3,"sex":"man2"},{"age":4,"list":[],"name":"zhang3","num":4,"sex":"man3"},{"age":5,"list":[],"name":"zhang4","num":5,"sex":"man4"},{"age":6,"list":[],"name":"zhang5","num":6,"sex":"man5"},{"age":7,"list":[],"name":"zhang6","num":7,"sex":"man6"},{"age":8,"list":[],"name":"zhang7","num":8,"sex":"man7"},{"age":9,"list":[],"name":"zhang8","num":9,"sex":"man8"},{"age":10,"list":[],"name":"zhang9","num":10,"sex":"man9"}],"name":"zhang","num":1,"sex":"man"}
name=zhang
num=num
sex=sex
age=age
list=[{"age":1,"list":[],"name":"zhang0","num":1,"sex":"man0"},{"age":2,"list":[],"name":"zhang1","num":2,"sex":"man1"},{"age":3,"list":[],"name":"zhang2","num":3,"sex":"man2"},{"age":4,"list":[],"name":"zhang3","num":4,"sex":"man3"},{"age":5,"list":[],"name":"zhang4","num":5,"sex":"man4"},{"age":6,"list":[],"name":"zhang5","num":6,"sex":"man5"},{"age":7,"list":[],"name":"zhang6","num":7,"sex":"man6"},{"age":8,"list":[],"name":"zhang7","num":8,"sex":"man7"},{"age":9,"list":[],"name":"zhang8","num":9,"sex":"man8"},{"age":10,"list":[],"name":"zhang9","num":10,"sex":"man9"}]
zhang0
zhang1
zhang2
zhang3
zhang4
zhang5
zhang6
zhang7
zhang8
zhang9

 
 
 
 
 
 

转载于:https://www.cnblogs.com/sophelia-M/p/4054632.html

Jason和Hank都是有经验的Java程序员。他们在软件开发行业工作多年,对Java编程语言非常熟悉。 Jason是一位优秀的Java程序员,他从大学开始学习编程,选择了Java作为主要的开发语言。他具有扎实的编程基础和深厚的理论知识。在过去的几年里,他参与了许多Java项目的开发,包括Web应用、桌面应用和移动应用。他擅长使用Java的各种框架和库,能够高效地开发出功能强大的应用程序。他对Java的特性,如面向对象编程、多线程处理和异常处理等都有深入的理解。在工作中,他善于与团队合作,能够与产品经理、设计师和测试人员有效沟通,保证项目的顺利进行。 Hank是一位经验丰富的Java工程师,他在软件开发领域有超过10年的工作经验。他曾经在一家大型软件公司工作,参与了多个复杂的Java项目开发。Hank在Java技术栈方面有着广泛的知识和经验,熟悉Spring框架、Hibernate ORM和Java Servlet等常用技术。他善于解决复杂的技术问题,并能提供高效的解决方案。他对Java的最新发展也非常关注,经常参加技术研讨会和培训课程,不断提升自己的技术水平。作为一名资深的Java开发者,Hank对代码质量有着严格的要求,他注重编写可读性高、可维护性好的代码,以确保项目的长期稳定运行。 总之,Jason和Hank都是出色的Java程序员,他们在开发过程中能够充分发挥自己的技术优势,提供高质量的解决方案,并与团队成员紧密合作,共同推动项目的成功实施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值