JSON 入门

Json需要的类包:

commons-httpclient-3.1.jar
commons-lang-2.4.jar
commons-logging-1.1.1.jar
json-lib-2.2.3-jdk13.jar
ezmorph-1.0.6.jar
commons-collections-3.2.1.jar

commons-beanutils.jar



简介:

JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。本文将快速讲解 JSON 格式,并通过代码示例演示如何分别在客户端和服务器端进行 JSON 格式数据的处理。  

JSON数据格式解析:

和 XML 一样,JSON 也是基于纯文本的数据格式。由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象。  

用 JSON 表示一个简单的 String “ abc ”,其格式为: "abc"

Boolean 类型表示为 true 或 false 。

此外,JavaScript 中的 null 被表示为 null,注意,true、false 和 null 都没有双引号,否则将被视为一个 String 。  

JSON 还可以表示一个数组对象,使用 [] 包含所有元素,每个元素用逗号分隔,元素可以是任意的 Value,例如,以下数组包含了一个 String,Number,Boolean 和一个 null: ["abc",12345,false,null] 

Object 对象在 JSON 中是用 {} 包含一系列无序的 Key-Value 键值对表示的,实际上此处的 Object 相当于 Java 中的 Map<String, Object>,而不是 Java 的 Class 。注意 Key 只能用 String 表示。  

例如,一个 Address 对象包含如下 Key-Value: 
 
用 JSON 表示如下: 
city:Beijing  
street:Chaoyang Road  
postcode:100025(整数) 
{"city":"Beijing","street":" Chaoyang Road ","postcode":100025} 

其中 Value 也可以是另一个 Object 或者数组,因此,复杂的 Object 可以嵌套表示,例如,一个 Person 对象包含 name 和 address 对象,可以表示如下: 
{"name":"Michael","address": 
{"city":"Beijing","street":" Chaoyang Road ","postcode":100025} 

JavaScript处理JSON数据:

上面介绍了如何用 JSON 表示数据,接下来,我们还要解决如何在服务器端生成 JSON 格式的数据以便发送到客户端,以及客户端如何使用 JavaScript 处理 JSON 格式的数据。  

先讨论如何在 Web 页面中用 JavaScript 处理 JSON 数据。

function handleJson() {  
  var j={"name":"Michael","address": 
      {"city":"Beijing","street":" Chaoyang Road ","postcode":100025} 
  };  
  document.write(j.name);  
  document.write(j.address.city);  
 } 
假定服务器返回的 JSON 数据是上文的: 

{    
    "username":"andy",   
    "age":20,   
    "info": { "tel": "123456", "cellphone": "98765"},   
    "address":   
        [   
            {"city":"beijing","postcode":"222333"},   
            {"city":"newyork","postcode":"555666"}   
        ]   
}      
只需将其赋值给一个 JavaScript 变量,就可以立刻使用该变量并更新页面中的信息了,相比 XML 需要从 DOM 中读取各种节点而言,JSON 的使用非常容易。我们需要做的仅仅是发送一个 Ajax 请求,然后将服务器返回的 JSON 数据赋值给一个变量即可。有许多 Ajax 框架早已包含了处理 JSON 数据的能力,例如 Prototype(一个流行的 JavaScript 库:http://prototypejs.org)提供了 evalJSON() 方法,能直接将服务器返回的 JSON 文本变成一个 JavaScript 变量: 

new Ajax.Request("http://url", {  
  method: "get",  
  onSuccess: function(transport) {  
    var json = transport.responseText.evalJSON();  
    // TODO: document.write(json.xxx);  
  }  
 }); 


服务器端输出 JSON 格式数据  

package com.yuankai;

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

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

public class TestJson {
	public static void main(String[] args) {
		Map map = new HashMap();   
		map.put("name","ChenXiao");  
		map.put("sex","male");   
		map.put("age",23);  
		
		List<Person> l = new ArrayList();
		l.add(new Person("yuankai", 21));
		l.add(new Person("guona", 20));
		String strs[] = {"hello","hi"};
		map.put("str", strs);
		map.put("list", l);
		
		//测试数组,要使用JSONArray
		JSONArray mapJson0 = JSONArray.fromObject(strs);
		
		//测试Object,Object中必须要有getter和setter方法
		JSONObject mapJson1 = JSONObject.fromObject(new Person("test", 56));
		
		//测试List
		JSONArray mapJson2 = JSONArray.fromObject(l);
		
		//测试Map
		JSONObject mapJson3 = JSONObject.fromObject(map);
		
		System.out.println(mapJson0.toString());
		System.out.println(mapJson1.toString());
		System.out.println(mapJson2.toString()); 
		System.out.println(mapJson3.toString()); 
	}
}
输出结果:

["hello","hi"]
{"age":56,"name":"test"}
[{"age":21,"name":"yuankai"},{"age":20,"name":"guona"}]
{"sex":"male","str":["hello","hi"],"age":23,"name":"ChenXiao","list":[{"age":21,"name":"yuankai"},{"age":20,"name":"guona"}]}


其他参考:

http://blog.csdn.net/initphp/article/details/9222731



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值