使用JSON进行网络数据交换Word下载.docx

上传人:b****6 文档编号:19390403 上传时间:2023-01-05 格式:DOCX 页数:14 大小:182.46KB
下载 相关 举报
使用JSON进行网络数据交换Word下载.docx_第1页
第1页 / 共14页
使用JSON进行网络数据交换Word下载.docx_第2页
第2页 / 共14页
使用JSON进行网络数据交换Word下载.docx_第3页
第3页 / 共14页
使用JSON进行网络数据交换Word下载.docx_第4页
第4页 / 共14页
使用JSON进行网络数据交换Word下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

使用JSON进行网络数据交换Word下载.docx

《使用JSON进行网络数据交换Word下载.docx》由会员分享,可在线阅读,更多相关《使用JSON进行网络数据交换Word下载.docx(14页珍藏版)》请在冰豆网上搜索。

使用JSON进行网络数据交换Word下载.docx

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

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

  viewplaincopytoclipboardprint?

  ["

12345,false,null]

  Object对象在JSON中是用{}包含一系列无序的Key-Value键值对表示的,实际上此处的Object相当于Java中的Map<

String,Object>

,而不是Java的Class。

注意Key只能用String表示。

例如,一个Address对象包含如下Key-Value:

  city:

Beijing

  street:

ChaoyangRoad

  postcode:

100025(整数)

  用JSON表示如下:

  {"

city"

:

Beijing"

"

street"

ChaoyangRoad"

postcode"

100025}

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

name"

Michael"

address"

  }

{"

100025}}

一个实际例子

  接下来,我会通过一个例子来详细说明OPhone客户端程序如何访问服务端的接口程序读取用户列表数据,并在模拟器上显示用户列表数据。

  1、服务端接口程序

  首先,我们创建一个名为User的JavaBean作为用户对象类,用来保存演示数据。

  publicclassUser{

  privateintid;

  s=keyword>

privateStringname;

  privateStringemail;

  privateStringgender;

  publicintgetId(){

  returnid;

  publicvoidsetId(intid){

  this.id=id;

  publicStringgetName(){

  returnname;

  publicvoidsetName(Stringname){

  this.name=name;

  publicStringgetEmail(){

  returnemail;

  publicvoidsetEmail(Stringemail){

  this.email=email;

  publicStringgetGender(){

  returngender;

  publicvoidsetGender(Stringgender){

  this.gender=gender;

  publicclassUser{privateintid;

privateStringname;

privateStringemail;

privateStringgender;

publicintgetId(){returnid;

}publicvoidsetId(intid){this.id=id;

}publicStringgetName(){returnname;

}publicvoidsetName(Stringname){this.name=name;

}publicStringgetEmail(){returnemail;

}publicvoidsetEmail(Stringemail){this.email=email;

}publicStringgetGender(){returngender;

}publicvoidsetGender(Stringgender){this.gender=gender;

}}

  接下来,我们创建一个名为JSONDemoServlet的Servlet类来作为服务端的接口程序。

在这个程序里,定义了一个List对象用来保存用户列表。

  privateList<

User>

list;

  客户端程序访问服务器端接口时,接口通过prepareData方法为用户列表初始化数据,添加用户数据到List对象中。

  privatevoidprepareData(){

  list=newArrayList<

();

  &

nbsp;

  Userbean1=newUser();

  bean1.setId(1001);

  bean1.setName("

Tony"

);

  bean1.setEmail("

tony@"

  bean1.setGender("

male"

  list.add(bean1);

  ……

  privatevoidprepareData(){list=newArrayList<

Userbean1=newUser();

bean1.setId(1001);

bean1.setName("

bean1.setEmail("

bean1.setGender("

list.add(bean1);

……}

  接着遍历用户列表,把列表中的每个Java用户对象转换为JSONObject对象,再加入到JSONArray中去。

  JSONArrayarray=newJSONArray();

  for(Userbean:

list){

  //单个用户JSON对象

  JSONObjectobj=newJSONObject();

  try{

  obj.put("

id"

bean.getId());

bean.getName());

email"

bean.getEmail());

gender"

bean.getGender());

  }catch(Exceptione){}

  array.put(obj);

JSONArrayarray=newJSONArray();

for(Userbean:

list){//单个用户JSON对象JSONObjectobj=newJSONObject();

try{obj.put("

obj.put("

}catch(Exceptione){}array.put(obj);

}

  最后,通过Servlet输出JSON时,需要设置正确的MIME类型和字符编码。

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

  response.setContentType("

text/plain"

  response.setCharacterEncoding("

UTF-8"

  PrintWriterout=response.getWriter();

  out.write(array.toString());

  out.flush();

  out.close();

  JSONDemoServlet.java的完整代码如下:

  importjava.io.IOException;

  importjava.io.PrintWriter;

  importjava.util.ArrayList;

  importjava.util.List;

  importjavax.servlet.ServletException;

  importjavax.servlet.http.HttpServlet;

  importjavax.servlet.http.HttpServletRequest;

  importjavax.servlet.http.HttpServletResponse;

  importorg.json.JSONArray;

  importorg.json.JSONObject;

  publicclassJSONDemoServletextendsHttpServlet{

  privatestaticfinallongserialVersionUID=-7368225680407826408L;

  /**

  *处理post方式提交的数据

  */

  publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

  doGet(request,response);

  *出来get方式提交的数据

  publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

  //准备用户数据

  prepareData();

  //JSON数组

  JSONObjectobj=newN>

JSONObject();

  //输出

  Userbean2=newUser();

  bean2.setId(1002);

  bean2.setName("

Jack"

  bean2.setEmail("

jack@"

  bean2.setGender("

  list.add(bean2);

nbsp;

 

Userbean3=newUser();

  bean3.setId(1003);

  bean3.setName("

Marry"

  bean3.setEmail("

marry@"

  bean3.setGender("

female"

  list.add(bean3);

  Userbean4=newUser();

  bean4.setId(1004);

  bean4.setName("

Linda"

  bean4.setEmail("

linda@"

  bean4.setGender("

  list.add(bean4);

out.close();

JSONDemoServlet.java的完整代码如下:

  publicclassJSONDemoServletextendsHttpServlet{

/***处理post方式提交的数据*/

  publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

  throwsServletException,IOException{doGet(request,response);

  }/***出来get方式提交的数据*/

  publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

  throwsServletException,IOException{

  //准备用户数据

  //JSON数组

list){/

  /单个用户JSON对象

  try{obj.put("

  }

  catch(Exceptione){}

  //输出

}

  privatevoidprepareData(){

  Userbean3=newUser();

  把该Servlet部署到Tomcat下,在浏览器输入接口地址http:

//localhost:

8080/article/JSONDemoServlet,输出结果如下:

  [{"

1001,"

},{"

1002,"

1003,"

1004,"

}]

  2、手机客户端程序

  准备好服务端的接口后,接下来就是准备写客户端的程序了。

打开Eclipse新建一个OPhone项目。

我们创建一个名为MainActivity的Activity类,如下图所示:

  因为要访问外部网络,所以要在AndroidManifest.xml文件里增加一行安全许可:

  <

uses-p

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

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

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

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