首页 > 代码库 > JSON学习笔记

JSON学习笔记

 

时间:2017-1-1 22:25

 

——什么是JSON

    JSON(JavaScript Object Notation)是一中轻量级的数据交换格式。
    JSON是用字符串表示JavaScript对象,例如可以在Servlet中发送一个JSON格式的字符串给客户端,JavaScript可以执行这个字符串,得到一个JavaScript对象。

    XML也可以用来作为数据交换格式。

——JSON对象语法

JSON语法:
    1)数据在键值对中
    2)数据由逗号分隔
    3)花括号保存对象
    4)方括号保存数组

JSON值:
    1)数字(整数或浮点数)
    2)字符串(在双引号中)
    3)逻辑值(true或false)
    4)数组(在方括号中)
    5)对象(在花括号中)
    6)null

应用JSON:
    var person = {"name" : "zhangsan", "age" : "20", "sex" : "male"};
    alert(person.name + ", " + person.age + ", " + person.sex);

    注意:key也要在双引号中。

——JSON与XML比较

1、可读性:XML胜出
2、解码难度:JSON本身就是JS对象(亲儿子),所以简单很多
3、流行度:XML已经流行好多年,但在Ajax领域,JSON更受欢迎

——把Java对象转换成JSON对象

Apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串,也可以把JavaBean转换成字符串。

1、json-lib核心jar包
    *   json-lib.jar

2、json-lib依赖jar包
    *   commons-lang.jar
    *   commons-beanutils.jar
    *   commons-logging.jar
    *   commons-collections.jar
    *   ezmorph.jar

3、json-lib中的核心类
    *   JSONObject
        >   本身是一个Map
        >   toString()方法可以得到一个JSON字符串
        >   JSONObject map = JSONObject.fromObject(person);
            把对象转换成JSONObject对象

    *   JSONArray
        >   本身是一个List
        >   toString()方法可以得到一个JSON字符串
        >   JSONArray list = JSONArray.fromObject(list)
            把List转换成JSONArray对象

=============================================================================

代码:

import java.util.ArrayList;
import java.util.List;
 
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
 
import org.junit.Test;
 
/**
 * 演示json-lib小工具
 * 
 * @author WYC
 * 
 */
public class Demo {
    /*
     * 当做Map来用
     */
    @Test
    public void fun1() {
        JSONObject map = new JSONObject();
        map.put("name", "zhangsan");
        map.put("age", 20);
 
        System.out.println(map.toString());
    }

输出:
{"name":"zhangsan","age":20}
 
----------------------------------------------------------------------------------------------------------------------------
    /*
     * 当已经有了一个Person对象时,可以把Person转换成JSONObject对象来用
     */
    @Test
    public void fun2() {
        Person p = new Person("zhangsan", 21);
 
        /*
         * 把对象转换成JSONObject类型
         */
        JSONObject map = JSONObject.fromObject(p);
        System.out.println(map);
    }

输出:
{"name":"zhangsan","age":21}
 
----------------------------------------------------------------------------------------------------------------------------
 
    /*
     * JSONArray
     */
    @Test
    public void fun3() {
        Person p1 = new Person("zhangsan", 22);
        Person p2 = new Person("lisi", 23);
 
        JSONArray list = new JSONArray();
        list.add(p1);
        list.add(p2);
        System.out.println(list);
    }

输出:
[{"name":"zhangsan","age":22},{"name":"lisi","age":23}]
 
----------------------------------------------------------------------------------------------------------------------------
 
    /*
     * 原来就有一个List,需要把List转换成JSONArray
     */
    @Test
    public void fun4() {
        Person p1 = new Person("zhangsan", 22);
        Person p2 = new Person("lisi", 23);
 
        List<Person> list = new ArrayList<Person>();
        list.add(p1);
        list.add(p2);
        System.out.println(JSONArray.fromObject(list));
    }
}

输出:
[{"name":"zhangsan","age":22},{"name":"lisi","age":23}] 

JSON学习笔记