首页 > 实用文档 > 知识 >

json格式化高亮

成考报名   发布时间:03-19    阅读:

篇一:《Ajax Hacks-hack7接收JSON格式的数据》

Ajax Hacks-hack7接收JSON格式的数据

怎样才能使用Ajax从服务器接收js对象数据呢?你可以使用一种叫javascript 对象符号的格式接收数据。本hack讲述用户输入信息,从服务器得到JSON格式的响应数据。

JSON很普通而直观,这也许是许多开发者喜欢使用的原因吧。一个例子就是,服务器程序从服务器得到信息,然后以JSON格式返回给web页面。JSON格式的数据描述如下:

左大括号“{”

一个或多个属性名,以冒号隔开的对应的值,以逗号隔开的属性/值对。

右大括号 “}”

每个属性的值可以是:

简单的字符串,例如 “hello”

数组,例如 [1,2,3,4]

数字

true, false, 或 null

其他对象,组合的,或者对象中还有对象。

详细信息请访问:/retype/zoom/1b8f6d35eefdc8d376ee32af?pn=2&x=0&y=0&raww=87&rawh=29&o=jpg_6_0_______&type=pic&aimh=29&md5sum=f0d17720b44ccedb1809c4e00649c6d0&sign=0791482292&zoom=&png=0-254&jpg=0-1383" target="_blank">知识部分:

服务端(生成Json数据):

使用Myeclipse:

1、 新建Web project:

2、 完成后的目录结构:

3、写一个序列化json的类,并继承自HttpServlet,覆写doGet方法 自己写一个最简单的生成jsonObject数据的方法:

/**

* 写json数据出来,类型jsonObject

* */

public String toJson() {

JSONObject jsonObject = new JSONObject();

try {

jsonObject.put("studentId", "2012329700030");

jsonObject.put("name", "龙隆蟀舞");

jsonObject.put("sex", "男");

jsonObject.put("password", "55555555");

jsonObject.put("major", "数字媒体与技术");

} catch (JSONException e) {

e.printStackTrace();

}

return jsonObject.toString();

}

然后在doGet方法中返回该数据:

String temp = toJson();

resp.getOutputStream().write(temp.getBytes("utf-8"));

resp.setContentType("text/json;charset=utf-8");

// resp.getWriter().print(temp);//也是输出的一种办法

在doPost方法中调用doGet方法:doGet(req, resp);

3、 然后配置WebRoot目录下的WEB-INF里的web.xml,在web-app节点里输入以下配置信息:

<servlet>

<servlet-name>Json_Serialize</servlet-name>

<servlet-class>com.zstu.practice.Json_Serialize</servlet-class> <!-- class节点就是你类的具体目录 -->

</servlet>

<servlet-mapping>

<servlet-name>Json_Serialize</servlet-name>

<url-pattern>/Json_Serialize</url-pattern>

</servlet-mapping>

4、 然后将该工程部署到服务器上,在浏览器中访问该工程的地址:

成功后可以访问到如下内容:

补充:

刚才写的是一条jsonObject(json对象)数据,

现在来写一条jsonArray(json数组)数据;

应用举例:

jsonObject 可以用于返回查询具体某个学号的单个学生数据

jsonArray 可以用于返回查询具体某个专业的所有学生数据

先改写下原来的toJsonObject方法:

/**

* 写json数据出来,类型jsonObject

* */

public JSONObject toJsonObject() {json格式化高亮

JSONObject jsonObject = new JSONObject();

try {

jsonObject.put("studentId", "2012329700030");

jsonObject.put("name", "龙隆蟀舞");

jsonObject.put("sex", "男");

jsonObject.put("age", "18");

jsonObject.put("major", "数字媒体与技术");

} catch (JSONException e) {

e.printStackTrace();

}

//返回数据

return jsonObject;

}

在写一个生成jsonArray的方法:

/**

* 写json数据出来,类型jsonArray

* */

public String toJsonArray() {

JSONArray jsonArray = new JSONArray();

// 放入一层对象数据

jsonArray.put(toJsonObject());

// 返回数据

return jsonArray.toString();

}

至此,服务端json格式的数据生成讲解完毕。

安卓端(数据请求:得到Josn) 写一个http请求的基类:包括GET和POST两种方式; 首先,最简单的GET方式:

/**

* 得到Json的字符串,通过GET方式

*

* @param url_path

* @return

*/

public static String getJsonGET(String url_path) {

String text = ""; // 定义要返回的字符串

try {

URL url = new URL(url_path);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 获取连接

conn.setRequestMethod("GET");// 请求的方式为GET conn.setConnectTimeout(4000);// 设置连接超时

int statusCode = conn.getResponseCode();// 获得状态码 if (statusCode == 200) {

InputStream is = conn.getInputStream();// 输入流 text = getStringFromInputStream(is);// 得到结果 return text;

} else {

text = "timeout";

return text;

}

} catch (Exception e) {

e.printStackTrace();

text = "timeout";

return text;

}

}

然后另一种方式为HttpClient的post:

/**

* 通过HttpClient的方式

*

* @param url

* @return

*/

public static String getJsonPOST(String url) {

HttpClient client = null;// 定义一个客户端

String text = ""; // 定义要返回的字符串

try {

BasicHttpParams httpParams = new BasicHttpParams();// 设置连接超时 HttpConnectionParams.setSoTimeout(httpParams, 8000); // 请求时间 HttpConnectionParams.setConnectionTimeout(httpParams, 8000);// 连接时间

client = new DefaultHttpClient(httpParams);// 实例化一个客户端

HttpPost post = new HttpPost(url);// 定义post方法

HttpResponse response = client.execute(post);// 使用客户端执行post方法,返回给我们一个HttpResponse对象

int statusCode = response.getStatusLine().getStatusCode(); // 获得状态码

if (statusCode == 200) {

// 使用响应对象获得实体, 获得输入流

InputStream is = response.getEntity().getContent();

text = getStringFromInputStream(is);

System.out.println("得到的数据:" + text);

return text;

} else {

System.out.println("连接超时");

text = "timeout";

return text;

}

} catch (Exception e) {

e.printStackTrace();

text = "timeout";

System.out.println("错误");

return text;

} finally {

if (client != null) {

client.getConnectionManager().shutdown(); // 关闭连接和释放资源 }

}

}

然后就可以通过get或者post的方式得到相应url的数据:

// 4.0以上不可再主线程中操作网络,注意。切不可在子线程中更新UI

new Thread() {

●【往下看,下一篇更精彩】●

上一篇: 做A怎么做

最新成考报名

  • 立春过后什么时候鱼开口
  • 2021年立春 2021年立春是几点几分
  • 冬至吃啥 南方冬至吃什么
  • 冬至几月几日 今年冬至是几号
  • 烧碱安全救护常识
  • 国庆节高速免费几天
  • 白露与秋分
  • 请示与批复有什么关系