JSON入门教程Word文档下载推荐.docx

上传人:b****6 文档编号:20694241 上传时间:2023-01-25 格式:DOCX 页数:45 大小:87.96KB
下载 相关 举报
JSON入门教程Word文档下载推荐.docx_第1页
第1页 / 共45页
JSON入门教程Word文档下载推荐.docx_第2页
第2页 / 共45页
JSON入门教程Word文档下载推荐.docx_第3页
第3页 / 共45页
JSON入门教程Word文档下载推荐.docx_第4页
第4页 / 共45页
JSON入门教程Word文档下载推荐.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

JSON入门教程Word文档下载推荐.docx

《JSON入门教程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《JSON入门教程Word文档下载推荐.docx(45页珍藏版)》请在冰豆网上搜索。

JSON入门教程Word文档下载推荐.docx

ChaoyangRoad"

postcode"

100025}

  其中Value也可以是另一个Object或者数组,因此,复杂的Object可以嵌套表示,例如,一个Person对象包含name和address对象,可以表示如下:

name"

Michael"

address"

  {"

}

JavaScript处理JSON数据

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

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

我们通过一个简单的JavaScript方法就能看到客户端如何将JSON数据表示给用户:

functionhandleJson(){

 varj={"

   {"

 };

 document.write(j.name);

 document.write(j.address.city);

  假定服务器返回的JSON数据是上文的:

  只需将其赋值给一个JavaScript变量,就可以立刻使用该变量并更新页面中的信息了,相比XML需要从DOM中读取各种节点而言,JSON的使用非常容易。

我们需要做的仅仅是发送一个Ajax请求,然后将服务器返回的JSON数据赋值给一个变量即可。

有许多Ajax框架早已包含了处理JSON数据的能力,例如Prototype(一个流行的JavaScript库:

http:

//prototypejs.org)提供了evalJSON()方法,能直接将服务器返回的JSON文本变成一个JavaScript变量:

newAjax.Request("

//url"

{

 method:

"

get"

 onSuccess:

function(transport){

  varjson=transport.responseText.evalJSON();

  //TODO:

document.write(json.xxx);

 }

});

服务器端输出JSON格式数据

  下面我们讨论如何在服务器端输出JSON格式的数据。

以Java为例,我们将演示将一个Java对象编码为JSON格式的文本。

  将String对象编码为JSON格式时,只需处理好特殊字符即可。

另外,必须用("

)而非('

)表示字符串:

viewplaincopytoclipboardprint?

1.static 

String 

string2Json(String 

s) 

 

2.  StringBuilder 

sb 

new 

StringBuilder(s.length()+20);

3.  sb.append('

'

);

4.  for 

(int 

i=0;

i<

s.length();

i++) 

5.    char 

s.charAt(i);

6.    switch 

(c) 

7.    case 

8.      sb.append("

9.      break;

10.    case 

11.      sb.append("

12.      break;

13.    case 

/'

14.      sb.append("

/"

15.      break;

16.    case 

b'

17.      sb.append("

_"

18.      break;

19.    case 

f'

20.      sb.append("

f"

21.      break;

22.    case 

n'

23.      sb.append("

24."

25.      break;

26.    case 

r'

27.      sb.append("

28."

29.      break;

30.    case 

t'

31.      sb.append("

  "

32.      break;

33.    default:

34.      sb.append(c);

35.    } 

36.  } 

37.  sb.append('

38.  return 

sb.toString();

39.} 

将Number表示为JSON就容易得多,利用Java的多态,我们可以处理Integer,Long,Float等多种Number格式:

staticStringnumber2Json(Numbernumber){

  returnnumber.toString();

  Boolean类型也可以直接通过toString()方法得到JSON的表示:

staticStringboolean2Json(Booleanbool){

  returnbool.toString();

  要将数组编码为JSON格式,可以通过循环将每一个元素编码出来:

array2Json(Object[] 

array) 

2.  if 

(array.length==0) 

3.    return 

[]"

;

4.  StringBuilder 

StringBuilder(array.length 

<

4);

5.  sb.append('

['

6.  for 

(Object 

7.    sb.append(toJson(o));

8.    sb.append('

'

9.  } 

10.  // 

将最后添加的 

变为 

]'

11.  sb.setCharAt(sb.length()-1, 

12.  return 

13.} 

  最后,我们需要将Map<

编码为JSON格式,因为JavaScript的Object实际上对应的是Java的Map<

该方法如下:

map2Json(Map<

String, 

Object>

map) 

(map.isEmpty()) 

{}"

StringBuilder(map.size() 

{'

6.  Set<

String>

keys 

map.keySet();

7.  for 

(String 

key 

keys) 

8.    Object 

value 

map.get(key);

9.    sb.append('

10.    sb.append(key);

11.    sb.append('

12.    sb.append('

13.    sb.append(toJson(value));

14.    sb.append('

15.  } 

16.  // 

将最后的 

}'

17.  sb.setCharAt(sb.length()-1, 

18.  return 

19.} 

为了统一处理任意的Java对象,我们编写一个入口方法toJson(Object),能够将任意的Java对象编码为JSON格式:

1.public 

static 

toJson(Object 

o) 

(o==null) 

null"

4.  if 

(o 

instanceof 

String) 

5.    return 

string2Json((String)o);

6.  if 

Boolean) 

7.    return 

boolean2Json((Boolean)o);

8.  if 

Number) 

9.    return 

number2Json((Number)o);

10.  if 

Map) 

11.    return 

map2Json((Map<

)o);

12.  if 

Object[]) 

13.    return 

array2Json((Object[])o);

14.  throw 

RuntimeException("

Unsupported 

type:

o.getClass().getName());

15.} 

  我们并未对Java对象作严格的检查。

不被支持的对象(例如List)将直接抛出RuntimeException。

此外,为了保证输出的JSON是有效的,Map<

对象的Key也不能包含特殊字符。

细心的读者可能还会发现循环引用的对象会引发无限递归,例如,精心构造一个循环引用的Map,就可以检测到StackOverflowException:

@Test(expected=StackOverflowError.class)

publicvoidtestRecurrsiveMap2Json(){

  Map<

map=newHashMap<

();

  map.put("

key"

map);

  JsonUtil.map2Json(map);

  好在服务器处理的JSON数据最终都应该转化为简单的JavaScript对象,因此,递归引用的可能性很小。

  最后,通过Servlet或MVC框架输出JSON时,需要设置正确的MIME类型(application/json)和字符编码。

假定服务器使用UTF-8编码,则可以使用以下代码输出编码后的JSON文本:

response.setContentType("

application/json;

charset=UTF-8"

response.setCharacterEncoding("

UTF-8"

PrintWriterpw=response.getWriter();

pw.write(JsonUtil.toJson(obj));

pw.flush();

  小结

  JSON已经是JavaScript标准的一部分。

目前,主流的浏览器对JSON支持都非常完善。

应用JSON,我们可以从XML的解析中摆脱出来,对那些应用Ajax的Web2.0网站来说,JSON确实是目前最灵活的轻量级方案。

JSON学习

JSON(JavaScriptObjectNotation)一种简单的数据格式,比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. 

8. 

9. 

beijing"

222333"

10. 

newyork"

555666"

11. 

12. 

13. 

14. 

alert(user.username);

15. 

alert(user.age);

16. 

alert(user.info.cellphone);

17. 

alert(user.address[0].city);

18. 

alert(user.address[0].postcode);

19.} 

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

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

19. 

20. 

user.username 

Tom"

21. 

22.} 

JSON提供了json.js包,下载http:

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

showCar() 

carr 

Car("

Dodge"

Coronet 

R/T"

1968, 

yellow"

alert(carr.toJSONString());

4.} 

6.function 

Car(make, 

model, 

year, 

color) 

this.make 

make;

this.model 

model;

this.year 

year;

this.color 

color;

11.} 

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

myEval() 

str 

Violet"

occupation"

character"

obj 

eval('

('

)'

alert(obj.toJSONString());

5.} 

或者使用parseJSON()方法

str.parseJSON();

下面使用prototype写一个JSON的ajax例子。

先写一个servlet(我的是servlet.ajax.JSONTest1.java)就写一句话

java代码

1.response.getWriter().print("

\"

name\"

Violet\"

occupation\"

character\"

}"

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

sendRequest() 

url 

/MyWebApp/JSONTest1"

mailAjax 

Ajax.Request( 

url, 

method:

get'

onComplete:

jsonResponse 

10.} 

12.function 

originalRequest) 

alert(originalRequest.responseText);

myobj 

originalRequest.responseText.parseJSON();

alert(myobj.name);

16.} 

prototype-<

st1:

chsdat

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1