关于json的原理我不再说啦,可以访问我的blog
http://fuchangle.iteye.com/blog/1535377,这篇主要看看json实际的应用,下面上代码
发送数据到servlet
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JSONpage</title>
<script type="text/javascript">
var xmlHttp;
function createXMLHttpRequest() {
if (window.ActiveXObject) { //(window.ActiveXObject)的作用,用来判断浏览器是否支持ActiveX控件,如果支持ActiveX控件,我们可以利用var xml=new ActiveXObject("Microsoft.XMLHTTP")的形式来创建XMLHTTPRequest对象
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) { //而在IE7及非IE浏览器中可以利用var xml=new XMLHttpRequest()创建XMLHttpRequest对象
xmlHttp = new XMLHttpRequest();
}
}
function doJSON(){
var car = getCarObject();
//将js对象转化成JSON对象的text
var carAsJSON = JSON.stringify(car);
alert(carAsJSON);
var url = "JSONTest1?timpStamp="+ new Date().getTime();
createXMLHttpRequest();
xmlHttp.open("POST",url,true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.send(carAsJSON);
}
//Ajax的回调方法
function handleStateChange(){
if(xmlHttp.readyState == 4){ //相应内容解析完成,可以在客户端调用啦
if(xmlHttp.status ==200){ //交易成功
parseResults();
}
}
}
//具体的回调动作
function parseResults(){
var requestDiv = document.getElementById("serverResponse");
if(requestDiv.hasChildNodes()){
requestDiv.removeChild(requestDiv.childNodes[0]);
}
//xmlHttp.responseText是servlet中返回回来的JSON格式的数据,将它创建成一个js的node对象放到DIV中
var responseText = document.createTextNode(xmlHttp.responseText);
requestDiv.appendChild(responseText);
//将JSON格式的TEXT转化成JSON对象,用eval('('+response+')')
var resultJson = eval('('+xmlHttp.responseText+')');
alert(resultJson);
alert(resultJson.name);
alert(resultJson.make);
alert(resultJson.model);
alert(resultJson.year);
alert(resultJson.color);
}
function Car(make,model,year,color){
this.make = make;
this.model = model;
this.year = year;
this.color = color;
}
function getCarObject(){
return new Car("Dodge", "Coronet R/T", 1968, "yellow")
}
</script>
</head>
<body>
<form action="#">
<input type="button" value="Click here to send JSON data to the server" onclick="doJSON();"/>
</form>
<h2>server response:</h2>
<div id="serverResponse"></div>
</body>
</html>
servlet接受数据
package com.json.servlet;
import java.io.BufferedReader;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
public class JSONTest1 extends HttpServlet{
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("----");
String json = readJSONStringFromRequestBody(request);
System.out.println("json = " + json);
JSONObject jsonObject = JSONObject.fromObject(json);
jsonObject.put("name", "benchi");
System.out.println("jsonObject= " + jsonObject.toString());
System.out.println(jsonObject.getInt("year"));
System.out.println(jsonObject.getString("make"));
System.out.println(jsonObject.getString("model"));
System.out.println(jsonObject.getString("color"));
//设置返回的格式是text
response.setContentType("text/plain");
response.getWriter().print(jsonObject);
}
public String readJSONStringFromRequestBody(HttpServletRequest request){
StringBuffer json = new StringBuffer();
String line = null;
try {
BufferedReader reader = request.getReader();
while((line = reader.readLine()) != null){
System.out.println("line= " + line);
json.append(line);
}
} catch (Exception e) {
e.printStackTrace();
}
return json.toString();
}
}
servlet在web.xml中的配置
<servlet>
<servlet-name>JSONTest1</servlet-name>
<servlet-class>com.json.servlet.JSONTest1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JSONTest1</servlet-name>
<url-pattern>/JSONTest1</url-pattern>
</servlet-mapping>
至此整个工程写完啦,下面的例子也在实际中常用
package com.mengya.jsonTest;
public class JsonBean1 {
private String col;
private String row;
private String value;
public String getCol() {
return col;
}
public void setCol(String col) {
this.col = col;
}
public String getRow() {
return row;
}
public void setRow(String row) {
this.row = row;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
package com.mengya.jsonTest;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.collections.map.HashedMap;
/**
*
* @author fuchangle
*
*/
public class JsonBanTest {
/**
* @param args
*/
public static void main(String[] args) {
boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray1 = JSONArray.fromObject(boolArray);
System.out.println(jsonArray1);
List list = new ArrayList();
list.add("first");
list.add("second");
JSONArray jsonArray2 = JSONArray.fromObject(list);
System.out.println(jsonArray2);
JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']");
System.out.println(jsonArray3);
Map map = new HashedMap();
map.put("name", "json");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
map.put("arr", new String[] { "a", "b" });
map.put("func", "function(i){return this.arr[i]}");
JSONObject json = JSONObject.fromObject(map);
System.out.println(json);
JsonBean1 jb = new JsonBean1();
jb.setCol("col1");
jb.setRow("row1");
jb.setValue("123");
JSONObject ja = JSONObject.fromObject(jb);
System.out.println(ja.toString());
List list2 = new ArrayList();
JsonBean1 jb2 = new JsonBean1();
jb2.setCol("col1");
jb2.setRow("row1");
jb2.setValue("123");
list2.add(jb);
list2.add(jb2);
JSONArray jsonArray = JSONArray.fromObject(list2);
System.out.println(jsonArray.toString());
String jsonStr = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
System.out.println(jsonObject);
System.out.println(jsonObject.get("name"));
System.out.println(jsonObject.get("bool"));
System.out.println(jsonObject.get("int"));
System.out.println(jsonObject.get("double"));
System.out.println(jsonObject.get("func"));
System.out.println(jsonObject.get("array"));
String basic = "{name = \"fuchangle\", age = 26, address = \"北京海淀区\"}";
JSONObject jsonObject2 = JSONObject.fromObject(basic);
System.out.println(jsonObject2.get("name"));
System.out.println(jsonObject2.get("age"));
System.out.println(jsonObject2.get("address"));
}
}
分享到:
相关推荐
**Ajax+JSON 实例详解** 在现代Web开发中,AJAX(Asynchronous JavaScript and XML)技术已经成为提升用户体验的重要工具,它允许网页在不刷新整个页面的情况下与服务器进行数据交互。结合JSON(JavaScript Object ...
标题中的"asp输出json实例"意味着我们将探讨一个ASP脚本,该脚本能够创建并返回JSON格式的数据。这通常是通过在服务器端处理数据,然后以JSON字符串的形式传递给客户端,例如通过AJAX(Asynchronous JavaScript and ...
在JSON实例练习题中,我们通常会涉及到以下几个关键知识点: 1. JSON对象:JSON对象由花括号{}包围,其中包含键值对。键用双引号括起来,后面跟着冒号,然后是对应的值。例如: ``` { "name": "张三", "age": ...
总的来说,C++ JSON实例提供了一个实践平台,让开发者了解如何在C++项目中有效地处理JSON数据。通过学习和使用提供的源代码,可以加深对JSON解析和序列化的理解,以及如何在VS2010环境中集成和使用第三方库。
标题"json实例源码90r1"表明这是一个关于C#的JSON应用实例集合,可能包含了不同版本的.NET Framework(如2.0, 3.5, 4.0, 4.5)下的代码示例。 描述中的"VS编程非常实用"提示我们,这些示例是为Visual Studio(VS)...
在 `Test2` 类中,我们首先实例化了 `TotalJson` 对象,并设置了其成员变量 `results` 和 `items` 的值,然后使用 `JSONObject.fromObject()` 方法将 `TotalJson` 对象转换为 JSON 对象。 ```java TotalJson total =...
本教程将针对初学者,详细讲解如何在iOS应用中处理JSON实例。 首先,理解JSON的基本结构至关重要。JSON是一种轻量级的数据格式,以键值对的形式存储数据,支持数组和对象。例如: ```json { "name": "John", ...
本教程将深入探讨如何使用Gson库解析复杂的JSON实例,让你只需寥寥几行代码就能轻松处理JSON解析问题。 ### Gson库简介 Gson库的核心功能是将Java对象(如自定义类)转换为JSON字符串,反之亦然。这个库非常直观,...
这个基于SSH框架的JSON实例不仅教你如何在Java Web应用中使用JSON,还涵盖了SSH框架的综合运用,包括Struts2的请求处理、Spring的依赖注入和事务管理,以及Hibernate的数据操作。对初学者来说,这是一次很好的实践,...
这个简单的JSON实例包含两个文件:`test.html`和`json.js`,它们是用于演示JSON在Web开发中的应用。 `test.html`文件通常是一个HTML页面,它在浏览器环境中运行,可以用来展示和交互数据。在这个实例中,`test....
AjaxJson 实例通常包括以下步骤: 1. **创建 XMLHttpRequest 对象**:这是 AJAX 的基础,用于与服务器进行通信。在 JavaScript 中,可以通过 new XMLHttpRequest() 创建一个对象。 2. **配置请求**:设置请求类型...
4. 使用Delphi 7处理JSON实例:以SuperObject为例,你可以创建一个SO对象,然后通过Add方法添加键值对,或者通过ParseJSONValue解析JSON字符串。以下是一个简单的示例: ```delphi uses SuperObject; var JSONStr...
在这个"struts1+JSON实例"中,我们将深入探讨如何结合Struts1、JSON以及Ajax技术来实现一个功能丰富的学生选课系统。 首先,我们需要理解数据库设计的基础知识。在MySQL中,学生选课系统可能包括如下的表:`...
1. 创建XMLHttpRequest对象:在现代浏览器中,我们可以直接通过`new XMLHttpRequest()`创建一个实例。 2. 配置请求:使用`open()`方法设置请求类型(GET或POST)、URL和是否异步执行。 3. 发送请求:调用`send()`...
标题“简单的json实例”暗示我们将探讨的是JSON的基本使用方法,可能包括如何创建JSON对象,以及如何在JavaScript中操作这些对象。JSON格式通常由键值对组成,键用引号包围,值可以是字符串、数字、布尔值、数组、...
在`.net(C#) ajax+json实例`中,开发者可能创建了一个Web应用,该应用使用C#后端处理业务逻辑,并通过Ajax请求与前端进行通信。前端可能使用JavaScript或者jQuery等库来发送Ajax请求,请求的数据格式为JSON。服务器...
下面是一些JSON实例的示例: 1. 基本键值对: ```json { "name": "张三", "age": 30, "isStudent": false } ``` 在这个例子中,"name"、"age"和"isStudent"是键,对应的值分别是字符串"张三"、数字30和布尔值...
**AjaxStruts2Json实例详解** 在Web开发中,用户界面的实时性和互动性变得越来越重要,这使得异步更新技术如Ajax(Asynchronous JavaScript and XML)被广泛应用。Ajax允许网页在不重新加载整个页面的情况下与...