Json学习

来源:互联网 发布:平安银行网络支付限额 编辑:程序博客网 时间:2024/05/22 01:48

JSON JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。JSON JavaScript原生格式,这意味着在 JavaScript 中处理 JSON数据不需要任何特殊的 API 或工具包。

JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。具体细节参考http://www.json.org/json-zh.html

举个简单的例子:

js 代码
  1. function showJSON() {
  2. var user =
  3. {
  4. "username":"andy",
  5. "age":20,
  6. "info": {"tel":"123456","cellphone":"98765"},
  7. "address":
  8. [
  9. {"city":"beijing","postcode":"222333"},
  10. {"city":"newyork","postcode":"555666"}
  11. ]
  12. }
  13. alert(user.username);
  14. alert(user.age);
  15. alert(user.info.cellphone);
  16. alert(user.address[0].city);
  17. alert(user.address[0].postcode);
  18. }

这表示一个user对象,拥有username, age, info, address等属性。

同样也可以用JSON来简单的修改数据,修改上面的例子

js 代码
  1. function showJSON() {
  2. var user =
  3. {
  4. "username":"andy",
  5. "age":20,
  6. "info": {"tel":"123456","cellphone":"98765"},
  7. "address":
  8. [
  9. {"city":"beijing","postcode":"222333"},
  10. {"city":"newyork","postcode":"555666"}
  11. ]
  12. }
  13. alert(user.username);
  14. alert(user.age);
  15. alert(user.info.cellphone);
  16. alert(user.address[0].city);
  17. alert(user.address[0].postcode);
  18. user.username = "Tom";
  19. alert(user.username);
  20. }

JSON提供了json.js包,下载http://www.json.org/json.js 后,将其引入然后就可以简单的使用object.toJSONString()转换成JSON数据。

js 代码
  1. function showCar() {
  2. var carr =new Car("Dodge","Coronet R/T", 1968,"yellow");
  3. alert(carr.toJSONString());
  4. }
  5. function Car(make, model, year, color) {
  6. this.make = make;
  7. this.model = model;
  8. this.year = year;
  9. this.color = color;
  10. }

可以使用eval来转换JSON字符到Object

js 代码
  1. function myEval() {
  2. var str = '{"name":"Violet","occupation":"character" }';
  3. var obj = eval('(' + str + ')');
  4. alert(obj.toJSONString());
  5. }

或者使用parseJSON()方法

js 代码
  1. function myEval() {
  2. var str = '{"name":"Violet","occupation":"character" }';
  3. var obj = str.parseJSON();
  4. alert(obj.toJSONString());
  5. }

下面使用prototype写一个JSONajax例子。

先写一个servlet (我的是servlet.ajax.JSONTest1.java)就写一句话
java 代码
  1. response.getWriter().print("{ /"name/": /"Violet/", /"occupation/": /"character/" }");

再在页面中写一个ajax的请求

js 代码
  1. function sendRequest() {
  2. var url ="/MyWebApp/JSONTest1";
  3. var mailAjax =new Ajax.Request(
  4. url,
  5. {
  6. method: 'get',
  7. onComplete: jsonResponse
  8. }
  9. );
  10. }
  11. function jsonResponse(originalRequest) {
  12. alert(originalRequest.responseText);
  13. var myobj = originalRequest.responseText.parseJSON();
  14. alert(myobj.name);
  15. }

prototype-<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.5.1</st1:chsdate>.js中提供了JSON的方法,String.evalJSON(),可以不使用json.js, 修改上面的方法

js 代码
  1. function jsonResponse(originalRequest) {
  2. alert(originalRequest.responseText);
  3. var myobj = originalRequest.responseText.evalJSON(true);
  4. alert(myobj.name);
  5. }

JSON还提供了java的jar包 http://www.json.org/java/index.html API也很简单,下面举个例子

在javascript中填加请求参数

js 代码
  1. function sendRequest() {
  2. var carr =new Car("Dodge","Coronet R/T", 1968,"yellow");
  3. var pars ="car=" + carr.toJSONString();
  4. var url ="/MyWebApp/JSONTest1";
  5. var mailAjax =new Ajax.Request(
  6. url,
  7. {
  8. method: 'get',
  9. parameters: pars,
  10. onComplete: jsonResponse
  11. }
  12. );
  13. }

使用JSON请求字符串就可以简单的生成JSONObject并进行解析,修改servlet添加JSON的处理(要使用json.jar)

java 代码
  1. privatevoid doService(HttpServletRequest request, HttpServletResponse response)throws IOException {
  2. String s3 = request.getParameter("car");
  3. try {
  4. JSONObject jsonObj = new JSONObject(s3);
  5. System.out.println(jsonObj.getString("model"));
  6. System.out.println(jsonObj.getInt("year"));
  7. } catch (JSONException e) {
  8. e.printStackTrace();
  9. }
  10. response.getWriter().print("{ /"name/": /"Violet/", /"occupation/": /"character/" }");
  11. }

同样可以使用JSONObject生成JSON字符串,修改servlet

java 代码
  1. privatevoid doService(HttpServletRequest request, HttpServletResponse response)throws IOException {
  2. String s3 = request.getParameter("car");
  3. try {
  4. JSONObject jsonObj = new JSONObject(s3);
  5. System.out.println(jsonObj.getString("model"));
  6. System.out.println(jsonObj.getInt("year"));
  7. } catch (JSONException e) {
  8. e.printStackTrace();
  9. }
  10. JSONObject resultJSON = new JSONObject();
  11. try {
  12. resultJSON.append("name","Violet")
  13. .append("occupation","developer")
  14. .append("age",new Integer(22));
  15. System.out.println(resultJSON.toString());
  16. } catch (JSONException e) {
  17. e.printStackTrace();
  18. }
  19. response.getWriter().print(resultJSON.toString());
  20. }
js 代码
  1. function jsonResponse(originalRequest) {
  2. alert(originalRequest.responseText);
  3. var myobj = originalRequest.responseText.evalJSON(true);
  4. alert(myobj.name);
  5. alert(myobj.age);
  6. }

文章出自:http://www.iteye.com/topic/71343

原创粉丝点击