JSONObject.fromObject--JSON与对象的转换

JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。)

代码中有这么一句,是后台的封装数据。

JSONObject jo = JSONObject.fromObject(map);
常见的java代码转换成json

 

--请注意,这个方法曾经给我造成过困惑。因为,它在对Object转换的时候是按照domain类中的所有getXXX()方法进行转换的。如果你在类中写了非属性的getXXX()方法,那么返回给你的就会有XXX属性了。

--使用net.sf.json.*下的类(jar包是json-lib-x.x.jar)



1. List集合转换成json代码

List list = new ArrayList();

list.add( "first" );

list.add( "second" );

JSONArray jsonArray2 = JSONArray.fromObject( list );

2. Map集合转换成json代码

Map map = new HashMap();

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 json = JSONObject.fromObject(map);

3. Bean转换成json代码

JSONObject jsonObject = JSONObject.fromObject(new JsonBean());

4. 数组转换成json代码

boolean[] boolArray = new boolean[] { true, false, true };

JSONArray jsonArray1 = JSONArray.fromObject(boolArray);

 

5. 一般数据转换成json代码

JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']" );

 

 

 

 

 

 

public static void main(String[] args) {
  Map map=new HashMap();
  map.put("我","妹");
  map.put("擦","哇");
  map.put("你","呀");
  JSONObject json = JSONObject.fromObject(map);
  System.out.println(json);
 }

輸出的結果 {"我":"妹","擦":"哇","你":"呀"}

 

toBean();

首先一个javabean对象
public class Student {

    private int id ;
    private String name;
    private int age;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
    public String toString(){
        return this.id + ", " + this.name + ", " + this.age;
    }
}

然后测试toBean方法的类
import net.sf.json.JSONObject;

public class ToBeanTest {

    public static void main(String[] args) {
        
        String json = "{id:'1001',name:'张三',age:'22'}";
        Student stu = new Student();
        JSONObject obj = JSONObject.fromObject(json);
        stu = (Student)JSONObject.toBean(obj, Student.class);
        System.out.println(stu);
    }

}
输出结果为1001, 张三, 22 
然后我们在修改修改
import net.sf.json.JSONObject;

public class ToBeanTest {

    public static void main(String[] args) {
        
        String json = "{id:'1001',name:'张三'}";
        Student stu = new Student();
        JSONObject obj = JSONObject.fromObject(json);
        stu = (Student)JSONObject.toBean(obj, Student.class);
        System.out.println(stu);
    }

}
把年龄给去掉age为int型,输出结果为:1001, 张三, 0 
然后再做小小改动
import net.sf.json.JSONObject;

public class ToBeanTest {

    public static void main(String[] args) {
        
        String json = "{id:'1001',age:'22'}"; 
        Student stu = new Student();
        JSONObject obj = JSONObject.fromObject(json);
        stu = (Student)JSONObject.toBean(obj, Student.class);
        System.out.println(stu);
    }

}
把姓名给去掉name为String型,输出结果为:1001, null, 22 
再改动一下:
import net.sf.json.JSONObject;

public class ToBeanTest {

    public static void main(String[] args) {
        
        String json = "{id:'1001',name:'张三',age:'nn'}";
        Student stu = new Student();
        JSONObject obj = JSONObject.fromObject(json);
        stu = (Student)JSONObject.toBean(obj, Student.class);
        System.out.println(stu);
    }

}
把age改成非整形,输出结果为:
1001, 张三, 0 

再改动一下:
import net.sf.json.JSONObject;

public class ToBeanTest {

    public static void main(String[] args) {
        
        String json = "{id:'1001',name:'张三',age:'22',sex:'男'}";
        Student stu = new Student();
        JSONObject obj = JSONObject.fromObject(json);
        stu = (Student)JSONObject.toBean(obj, Student.class);
        System.out.println(stu);
    }

}
加了一个sex:'男'的一对键值,输出结果为:
1001, 张三, 22

posted @ 2016-03-30 10:23  sq_1303037035  阅读(1902)  评论(0编辑  收藏  举报