JSON(JavaScript. Object Notation)一种简单的数据格式,比xml更轻巧。JSON是JavaScript.原生格式,这意味着在JavaScript.中处理JSON数据不需要任何特殊的API或工具包。
JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。具体细节参考http://www.json.org/json-zh.html
举个简单的例子:
js 代码
-
function showJSON() {
-
var user =
-
{
-
"username":"andy",
-
"age":20,
-
"info": { "tel": "123456", "cellphone": "98765"},
-
"address":
-
[
-
{"city":"beijing","postcode":"222333"},
-
{"city":"newyork","postcode":"555666"}
-
]
-
}
-
-
alert(user.username);
-
alert(user.age);
-
alert(user.info.cellphone);
-
alert(user.address[0].city);
-
alert(user.address[0].postcode);
- }
这表示一个user对象,拥有username, age, info, address等属性。
同样也可以用JSON来简单的修改数据,修改上面的例子
js 代码
-
function showJSON() {
-
var user =
-
{
-
"username":"andy",
-
"age":20,
-
"info": { "tel": "123456", "cellphone": "98765"},
-
"address":
-
[
-
{"city":"beijing","postcode":"222333"},
-
{"city":"newyork","postcode":"555666"}
-
]
-
}
-
-
alert(user.username);
-
alert(user.age);
-
alert(user.info.cellphone);
-
alert(user.address[0].city);
-
alert(user.address[0].postcode);
-
-
user.username = "Tom";
-
alert(user.username);
- }
JSON提供了json.js包,下载http://www.json.org/json.js后,将其引入然后就可以简单的使用object.toJSONString()转换成JSON数据。
js 代码
-
function showCar() {
-
var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");
-
alert(carr.toJSONString());
-
}
-
-
function Car(make, model, year, color) {
-
this.make = make;
-
this.model = model;
-
this.year = year;
-
this.color = color;
- }
可以使用eval来转换JSON字符到Object
js 代码
-
function myEval() {
-
var str = '{ "name": "Violet", "occupation": "character" }';
-
var obj = eval('(' + str + ')');
-
alert(obj.toJSONString());
- }
或者使用parseJSON()方法
js 代码
-
function myEval() {
-
var str = '{ "name": "Violet", "occupation": "character" }';
-
var obj = str.parseJSON();
-
alert(obj.toJSONString());
- }
下面使用prototype写一个JSON的ajax例子。
先写一个servlet (我的是servlet.ajax.JSONTest1.java)就写一句话
java 代码
- response.getWriter().print("{ \"name\": \"Violet\", \"occupation\": \"character\" }");
再在页面中写一个ajax的请求
js 代码
-
function sendRequest() {
-
var url = "/MyWebApp/JSONTest1";
-
var mailAjax = new Ajax.Request(
-
url,
-
{
-
method: 'get',
-
onComplete: jsonResponse
-
}
-
);
-
}
-
-
function jsonResponse(originalRequest) {
-
alert(originalRequest.responseText);
-
var myobj = originalRequest.responseText.parseJSON();
-
alert(myobj.name);
- }
prototype-1.5.1.js中提供了JSON的方法,String.evalJSON(),可以不使用json.js, 修改上面的方法
js 代码
-
function jsonResponse(originalRequest) {
-
alert(originalRequest.responseText);
-
var myobj = originalRequest.responseText.evalJSON(true);
-
alert(myobj.name);
- }
JSON还提供了java的jar包 http://www.json.org/java/index.html API也很简单,下面举个例子
在javascript中填加请求参数
js 代码
-
function sendRequest() {
-
var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");
-
var pars = "car=" + carr.toJSONString();
-
-
var url = "/MyWebApp/JSONTest1";
-
var mailAjax = new Ajax.Request(
-
url,
-
{
-
method: 'get',
-
parameters: pars,
-
onComplete: jsonResponse
-
}
-
);
- }
使用JSON请求字符串就可以简单的生成JSONObject并进行解析,修改servlet添加JSON的处理(要使用json.jar)
java 代码
-
private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException {
-
String s3 = request.getParameter("car");
-
try {
-
JSONObject jsonObj = new JSONObject(s3);
-
System.out.println(jsonObj.getString("model"));
-
System.out.println(jsonObj.getInt("year"));
-
} catch (JSONException e) {
-
e.printStackTrace();
-
}
-
response.getWriter().print("{ \"name\": \"Violet\", \"occupation\": \"character\" }");
- }
同样可以使用JSONObject生成JSON字符串,修改servlet
java 代码
-
private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException {
-
String s3 = request.getParameter("car");
-
try {
-
JSONObject jsonObj = new JSONObject(s3);
-
System.out.println(jsonObj.getString("model"));
-
System.out.println(jsonObj.getInt("year"));
-
} catch (JSONException e) {
-
e.printStackTrace();
-
}
-
-
JSONObject resultJSON = new JSONObject();
-
try {
-
resultJSON.append("name", "Violet")
-
.append("occupation", "developer")
-
.append("age", new Integer(22));
-
System.out.println(resultJSON.toString());
-
} catch (JSONException e) {
-
e.printStackTrace();
-
}
-
response.getWriter().print(resultJSON.toString());
- }
js 代码
-
function jsonResponse(originalRequest) {
-
alert(originalRequest.responseText);
-
var myobj = originalRequest.responseText.evalJSON(true);
-
alert(myobj.name);
-
alert(myobj.age);
- }
分享到:
相关推荐
#### 标题解析:Debian Package Howto(Debian包如何制作) 标题揭示了文档的核心主题:教导用户如何创建Debian软件包。Debian是一个广泛使用的Linux发行版,以其高质量的软件包管理和社区支持而闻名。创建Debian包...
《C++ How to Program》第八版是C++编程领域中一本广受欢迎的教材,由Paul Deitel和Harvey Deitel合著。这本书以其全面、深入的讲解和丰富的实例深受学生和程序员的喜爱。作为该教材的配套源代码,这些文件为读者...
command line如何查看linux系统的IP地址是多少?
EMC VNX7500是EMC公司生产的高端存储设备,属于VNX系列。VNX系列是EMC企业级存储产品线,主要面向中大型企业的关键业务应用。VNX7500型号是该系列中的一个型号,它支持多种协议,实现了块存储(Block)和文件存储...
linux集群系统LVS-HOWTO官站文档的电子书,chm格式。
**知识点详解:EMC VNX5300配置与架构** **一、EMC VNX5300概述** EMC VNX5300是一款高性能的存储解决方案,旨在为中型企业提供强大的数据管理和存储能力。它融合了块级和文件级存储功能,能够满足不同业务场景下...
所得税是企业根据其应纳税所得额计算缴纳的税费,它涉及到企业的财务管理和税务规划。本教程将通过具体的案例深入解析所得税的计算与会计处理。在分析之前,我们需要了解所得税的基本概念,包括税率变动对企业利润的...
【标题】"jarchi-hwo:snclivedoc 2" 暗示着这是一个关于JavaScript编程的项目,可能是某个文档系统或者框架的第二个版本。"jarchi-hwo"可能是一个项目代号或者作者的标识,而"snclivedoc"可能是这个项目的具体名称,...
HWO-021 WiFi网优产品体系讲解 HWO-022 WiFi网络基础知识 HWO-023 WiFi网络性能分析 HWO-024 H3C WiFi天线产品 HWO-025 WiFi网络优化设计原则 HWO-026 WiFi网络优化操作指导 HWO-027 WiFi网优工具介绍 HWO-...
在IT领域,无线网络,尤其是Wi-Fi,是日常生活中不可或缺的一部分。本文将深入探讨Wi-Fi无线网络的基础知识,帮助读者全面了解这一技术的核心概念、工作原理以及相关设置和优化技巧。 首先,我们要明白Wi-Fi是一种...
- It’s time to __________. (go to bed) ### 六、PPT课件资源 此外,课件还提供了丰富的PPT模板、素材、背景、图表等资源链接,方便教师们根据需要下载使用,使课堂更加生动有趣。 综上所述,这份课件不仅覆盖...
Dim volume(0 To 1) As Long waveOutGetVolume 0, volume(0) ' 假设设备句柄为0,实际可能需要查询 Dim leftVolume As Double, rightVolume As Double leftVolume = volume(0) / &H10000 ' 将左声道音量转换为0-...
HWAVEOUT hwo, // handle to waveform-out device DWORD dwVolume // volume control settings ); ``` 其中,`hwo`参数是通过waveOutOpen函数获取的声音输出设备句柄,`dwVolume`参数是音量设置,它是一个32位...
private static extern int waveOutOpen(out IntPtr hwo, uint uDeviceID, [In] ref WAVEFORMATEX pwfx, IntPtr dwCallback, IntPtr dwInstance, uint dwFlags); // 其他WaveOut函数的声明... public void PlayWav...
MMRESULT waveOutPrepareHeader(PHWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh); ``` - **参数**: - `hwo`: 音频设备句柄。 - `pwh`: 指向 `WAVEHDR` 结构体的指针。 - `cbwh`: `WAVEHDR` 结构体的大小。 - **...
链接:https://pan.baidu.com/s/1wWk_D_JOmgKCvmQ6HWO1Jw
Private Declare Function waveOutGetVolume Lib "winmm.dll" (ByVal hwo As Long, lpdwVolume As Long) As Long Private Declare Function waveOutSetVolume Lib "winmm.dll" (ByVal hwo As Long, ByVal dwVolume ...
获取音量可以通过`waveOutGetVolume`函数,它接收一个设备句柄(hwo,通常为0表示默认设备)和一个Long型变量(lpdwVolume)作为参数,该变量在函数执行后将被填充为当前音量值。设置音量则使用`waveOutSetVolume`...
Private Declare Function waveOutSetVolume Lib "winmm.dll" (ByVal hwo As Long, ByVal dwVolume As Long) As Long Private Declare Function waveInSetVolume Lib "winmm.dll" (ByVal hwo As Long, ByVal ...
Declare Function waveOutSetVolume Lib "winmm.dll" (ByVal hwo As Long, ByVal dwVolume As Long) As Long ``` 这里的`hwo`参数通常传入0,表示系统默认的音频设备。 2. **音量控制**:`waveOutSetVolume`函数...