援引一段定义“JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。”
在这次看json的时候,我努力去寻找下面几个问题的答案:
1.为什么用json,都是说js原生格式,到底是什么?
2.在js和java中,能方便的把对象转换成json的格式吗?
3.又如何把jsonString恢复成js以及java中的对象?
一。对于json格式的定义,先花5分钟看这个页面:http://www.json.org/json-zh.html(到底是官方站...几个简单的图就把东西全画出来,一目了然).首先需要了解一下json的格式然后才能继续。
二。再通过下面这段js,来看看json格式定义的东西,到底好在哪里呢?
function
showJSON()
...
{
var user =
...{
"username":"andy",
"age":20,
"info": ...{ "tel": "123456", "cellphone": "98765"},
"address":
[
...{"city":"beijing","postcode":"222333"},
...{"city":"newyork","postcode":"555666"}
]
}
alert(user.username);
alert(user.address[0].postcode);
}
看到了吗,按JSON格式定义的var user, 可以直接使用user.username这种格式直接操作。对于比较复杂的bean,能用这种.进行直接访问操作,大概是最简单的方式了。json的便利性,就是来源自这种js的原生格式。
三。js的Object转jsonString: JSON提供了json.js包,下载http://www.json.org/json.js 后,将其引入然后就可以简 单的使用object.toJSONString()转换成JSON数据。
function
Car(make, model, year, color)
...
{
this.make = make;
this.model = model;
this.year = year;
this.color = color;
}
function
showCar()
...
{
var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");
alert(carr.toJSONString());
}
四。js的jsonString转Object:
1.使用eval来转换JSON字符到Object
function
myEval()
...
{
var str = '{ "name": "Violet", "occupation": "character" }';
var obj = eval('(' + str + ')');
alert(obj);
}
2.使用parseJSON()方法
function
myEval()
...
{
var str = '{ "name": "Violet", "occupation": "character" }';
var obj = str.parseJSON();
alert(obj);
}
五。java中的bean转jsonString
json对java的支持提供了几个类,参阅http://www.json.org/java/index.html。
将一个javabean变成json对象可以使用JSONObject(java.lang.Object bean)构造.这个对象覆盖了toString方法,调用toString() 就可以得到JSON string.
toString() Make a JSON text of this JSONObject.
一下代码演示一个javaBean对象封装成json的过程
public
class
Users
implements
java.io.Serializable
...
{
// Fields
private String userAccount;
private String userPwd;
// Constructors
public Users() ...{
}
public Users(String userAccount, String userPwd) ...{
this.userAccount = userAccount;
this.userPwd = userPwd;
}
// Property accessors
public String getUserAccount() ...{
return this.userAccount;
}
public void setUserAccount(String userAccount) ...{
this.userAccount = userAccount;
}
public String getUserPwd() ...{
return this.userPwd;
}
public void setUserPwd(String userPwd) ...{
this.userPwd = userPwd;
}
}
public
class
MMM
...
{
public static void main(String[] args) ...{
Users u = new Users("张三","123456");
JSONObject jo = new JSONObject(u);
System.out.println(jo.toString());
try ...{
System.out.println(jo.get("userPwd"));
} catch (JSONException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
上面引用了以下几个url的资料,呵呵:)感谢这些朋友的share
http://www.cnblogs.com/Truly/archive/2006/12/31/608896.html
http://www.ibm.com/developerworks/cn/web/wa-ajaxintro10/
http://www.javaeye.com/topic/71343