Posted on 2008-12-26 19:12
H2O 閱讀(687)
評論(0) 編輯 收藏 所屬分類:
ajax
什么是JSON?
一種輕量級的數據傳送格式,{}對象,[]數組,"屬性名":"屬性值",用逗號隔開。廢話少說,看代碼更直接,以下自己寫的例子。
<script type="text/javascript">
//純字符串+eval

define = "{
}{name:'Michael',email:'17bity@gmail.com'}";
eval("data = "+define);
alert("name:"+data.name);
alert("email:"+data.email);
//純對象

var user ={
}{
"name":"yizhi",
"age":22,
"belive":"陽光總在風雨后"
};
alert(user.name);
alert(user.age);
alert(user.belive);
//純數組
var color =
[

{
}{"colorName":"red","symbol":"喜慶"},

{
}{"colorName":"green","symbol":"希望"}
]
;
alert(color[0].colorName+"------>"+color[0].symbol);
alert(color[1].colorName+"------>"+color[1].symbol);
//對象+屬性+數組+屬性

var jsonObj ={
}{
"myProperty":"我的屬性",
"myObject":{
"name":{
"firstName":"易",
"familyName":"志",
"fullName":"易志"
},
"age":"myObject的年齡"
},
"myFriends":[

{
}{
"name":"我的第①個朋友的名字",
"age":"我的第①個朋友的年齡"
},

{
}{
"name":"我的第②個朋友的名字",
"age":"我的第②個朋友的年齡"
}
]
}
alert("jsonObje----------->復雜的json對象");
alert(jsonObj.myProperty);
alert(jsonObj.myObject.name.firstName);
alert(jsonObj.myObject.name.familyName);
alert(jsonObj.myObject.name.fullName);
alert(jsonObj.myObject.age);
alert(jsonObj.myFriends[0].name);
alert(jsonObj.myFriends[0].age);
alert(jsonObj.myFriends[1].name);
alert(jsonObj.myFriends[1].age);

</script>
可通過ajax把json字符串傳到后臺 后臺可以把json字符串轉為對象,也可以把對象或者數組轉為json字符串,必須天就愛json的jar包,小測試:

public class User extends ActionForm
{
private int id;
private String name;


.

package com.yz.jsonTest;

import java.util.*;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONString;


public class JsonTest
{

public static void main(String[] args) throws JSONException
{
Collection c = getList();
//數組
JSONArray jary = new JSONArray(c);
System.out.println(jary); //[0,1,2,3,4]
String jsonStr2 ="[{'a':'1','b':'2'},{'a':'3','b':'4'}]";
JSONArray jary2 = new JSONArray(jsonStr2);
System.out.println(jary2.getJSONObject(1).get("a")); //3
//對象
String jsonStr="{'name':'yizhi','age':'19'}";
JSONObject jobj = new JSONObject(jsonStr);
System.out.println(jobj.get("name")); //yizhi
System.out.println(jobj.get("age")); //19
Map mp = new HashMap();
mp.put("happy", "開心");
mp.put("sad", "悲傷");
JSONObject jobj2 = new JSONObject(mp);
System.out.println(jobj2.get("happy")); //開心
}

public static List getList()
{
List lst = new ArrayList();

for (int i = 0; i < 5; i++)
{
lst.add(i);
}
return lst;
}
}

Action中。。


package com.yz.jsonTest;

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.json.JSONArray;


public class JsonTestAction extends DispatchAction
{

public List<User> getUserList()
{
List<User> lst = new ArrayList<User>();

for(int i=0;i<3;i++)
{
User u = new User();
u.setId(i);
u.setAge(i+20);
u.setName(i+"號");
lst.add(u);
}
return lst;
}
public ActionForward TestJson(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)

throws Exception
{
JSONArray jary = new JSONArray(getUserList());
System.out.println(jary);
return null;
}
}
