- 浏览: 194471 次
- 性别:
- 来自: QD
文章分类
- 全部博客 (127)
- Struts2 (8)
- Web (27)
- 计算机基础 (2)
- 面试 (2)
- JQuery (4)
- MySQL (1)
- SQL (1)
- AJAX (3)
- Java (17)
- Javascript (36)
- 情感 (0)
- Oracle (7)
- Spring (5)
- FreeMarker (2)
- JSON (1)
- 表达式 (1)
- 线程 (4)
- WebService (10)
- MyEclipse (2)
- LDAP (1)
- Tomcat (1)
- NIO (1)
- Linux (1)
- ExtJS (4)
- Android (1)
- Dojo (2)
- Maven (9)
- Ant (7)
- 分布式 (1)
- Intellij IDEA (1)
最新评论
-
northc:
米饭军 写道如果文件已存在怎样避免应该会覆盖的
用Ant scp往远程linux传文件 -
米饭军:
如果文件已存在怎样避免
用Ant scp往远程linux传文件 -
luis025:
不支持列隐藏 硬伤
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1) -
rgbhje:
楼主大神,我把你的代码简单改了一小下,在4.2可以跑了
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1) -
rgbhje:
楼主大神,我把你的代码简单改了一小下,在4.2可以跑了
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1)
使用JSON进行数据传输
一、选择的意义
在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式。为了更好的使用ajax,我们将学习一种有用的数据格式 JavaScript Object Notation(JSON),以及如何使用它更轻松地在应用程序中移动数据和对象。JSON是一种简单的数据交换格式,在某些方面,它的作用与XML非常类似,但比XML更为简单,JSON的语法简化了数据交换的难度,而且提供了一种伪对象的方式。
Java的对象 < - >JavaScript对象(json数据格式)
简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串(伪对象),然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户端传递给服务器端程序。这个字符串看起来有点儿古怪(稍后会看到几个示例),但是 JavaScript 很容易解释它,而且 JSON 可以表示比名称/值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。
关于JSON对象
1、使用JavaScript语法创建对象
//定义一个函数,作为构造函数
fucntion person(name,sex)
{
this.name=name;
this.sex=sex;
}
//创建一个实例
var p=new Person(‘张三’,’男’);
//输出Person实例
alert(p.name);
注意:通过该方式创建的对象是一般的脚本对象
2、从JavaScript1.2开始创建对象有了一种更快捷的语法(Json的语法),如下:
var obj={name:"张三","sex":'男'};
alert(obj.sex);
关于数组
1、早期的JavaScript数组
var arr=new Array();
arr[0]=’a’;
arr[1]=’bbc’
我们也可以通过如下方式创建数组
var arr=new Array(‘a’,’bbc’);
2、使用JSON语法,则可以通过如下方式创建数组
var arr=[‘a’,’bbc’];
按照最简单的形式,可以用下面这样的 JSON 表示名称/值对:
{ "firstName":"Brett" }
|
这个示例非常基本,而且实际上比等效的纯文本名称/值对占用更多的空间:
firstName=Brett
|
但是,当将多个名称/值对串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个名称/值对的记录,比如:
{"firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com"}
|
从语法方面来看,这与名称/值对相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。
当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在 XML 中,需要许多开始标记和结束标记;如果使用典型的名称/值对(就像在本系列前面文章中看到的那种名称/值对),那么必须建立一种专有的数据格式,或者将键名称修改为 person1-firstName
这样的形式。
如果使用 JSON,就只需将多个带花括号的记录分组在一起:
{ "people": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
]}
|
这不难理解。在这个示例中,只有一个名为
people
的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(每个值包含多个记录):
{ "programmers": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
],
"authors": [
{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
],
"musicians": [
{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
]
}
|
这里最值得注意的是,能够表示多个值,每个值进而包含多个值。但是还应该注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称/值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。甚至可以声明如下的Json对象
var obj2={people:{name:'张三',sex:"男"}}
alert(obj2.people.name);
在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,甚至可以以不同方式表示同一事物。
{deptid:'1',deptname:'开发部',deptnum:'2',deptdesc:'开发相关',
emps:[{empid:1,empname:'张三',sex:’男’,age:’20’},{empid:2,empname:'张三',sex:’男’,age:’20’},{empid:3,empname:'张三',sex:’男’,age:’20’}]}
掌握了 JSON 格式之后,在 JavaScript 中使用它就很简单了。JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。
例如,可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:
var people =
{ "programmers": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
],
"authors": [
{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
],
"musicians": [
{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
]
}
|
这非常简单;现在 people
包含前面看到的 JSON
格式的数据。但是,这还不够,因为访问数据的方式似乎还不明显。
尽管看起来不明显,但是上面的长字符串实际上只是一个数组;将这个数组放进 JavaScript 变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问 programmers 列表的第一个条目的姓氏,只需在 JavaScript 中使用下面这样的代码:
people.programmers[0].lastName;
|
注意,数组索引是从零开始的。所以,这行代码首先访问
people
变量中的数据;然后移动到称为
programmers
的条目,再移动到第一个记录([0]
);最后,访问 lastName
键的值。结果是字符串值 “McLaughlin”。
下面是使用同一变量的几个示例。
people.authors[1].genre // Value is "fantasy"
people.musicians[3].lastName
// Undefined. This refers to the fourth entry,and there isn't one
people.programmers[2].firstName // Value is "Elliotte"
|
利用这样的语法,可以处理任何 JSON 格式的数据,而不需要使用任何额外的 JavaScript 工具包或 API。
正如可以用点号和括号访问数据,也可以按照同样的方式轻松地修改数据:
people.musicians[1].lastName = "Rachmaninov";
|
在将字符串转换为 JavaScript json格式对象之后,就可以像这样修改变量中的数据。
注意:json格式的对象和json文本是不同的
var obj={name:"张三","sex":'男'}; //json格式的对象
var str="{name:"张三","sex":'男'}"; //json格式的字符串(json格式的文本)
当然,如果不能轻松地将对象转换回本文提到的文本格式,那么所有数据修改都没有太大的价值。在 JavaScript 中这种转换也很简单:
var newJSONtext = people.toJSONString();
|
这样就行了!现在就获得了一个可以在任何地方使用的文本字符串,例如,可以将它用作 Ajax 应用程序中的请求字符串。
更重要的是,可以将任何 JavaScript 对象转换为 JSON 文本。并非只能处理原来用 JSON 字符串赋值的变量。为了对名为 myObject
的对象进行转换,只需执行相同形式的命令:
<script type="text/javascript">
function Car(make,model,year,color)
{
this.make=make;
this.model=model;
this.year=year;
this.color=color;
}
function showCar()
{
var carr = new Car("Dodge","Coronet R/T",1968,"yellow");
alert(carr.toJSONString());
}
</script>
这就是 JSON 与其他数据格式之间最大的差异。如果使用 JSON,只需调用一个简单的函数,就可以获得经过格式化的数据,可以直接使用了。对于其他数据格式,需要在原始数据和格式化数据之间进行转换。即使使用 Document Object Model 这样的 API(提供了将自己的数据结构转换为文本的函数),也需要学习这个 API 并使用 API 的对象,而不是使用原生的 JavaScript 对象和语法。
最终结论是,如果要处理大量 JavaScript 对象,那么 JSON 几乎肯定是一个好选择,这样就可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式(Ajax)。
发表评论
-
Ext Toolbar换行
2012-06-21 09:02 01.var oneTbar=new Ext.Toolba ... -
禁止select控件選擇
2012-06-20 20:06 0禁止select控件選擇 大家知道, 對於HTML控件 ... -
几种压缩算法原理介绍
2012-05-25 20:04 1369先给出一个JS实现的ZIP:http://stuartk ... -
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1)
2012-03-12 17:00 10908需要将ExtJS Grid 导出 Excel 的同学可以试一试 ... -
Ext Js 4.x 扩展自己的XType
2012-03-03 14:26 1564如果想用自己定制的XType(比如这里想用一个Obj存 ... -
(转)Javascript中大括号“{}”的多义性
2012-02-25 11:21 1015JS中大括号有四种语义作用语义1,组织复合语句,这是最常 ... -
function sleep
2012-02-17 19:16 890//毫秒 (function sleep(t){ ... -
不用递归,循环算0-9999之和(js)
2012-02-17 19:15 898var i=0,sum=eval(new Arra ... -
Augment.js 为旧浏览器增加现代Javascript的功能支持
2012-01-18 12:06 1084index: http://olivernn. ... -
Javascript中的~和~~
2011-12-30 15:58 886<script type="text/j ... -
js中的onchange和onpropertychange
2011-12-28 11:26 1851当一个HTML元素的属 ... -
parentNode、parentElement,childNodes、children
2011-12-26 17:38 936parentNode、parentElement,childN ... -
关于JS中的constructor与prototype
2011-12-22 19:53 1015我们都知道,在JS中有一个function的东西。一般人 ... -
各浏览器对document.getElementById等方法的实现差异
2011-12-21 13:15 935本文来自:http://www.cnblogs.com/sna ... -
全世界最短的IE判定
2011-12-20 15:45 808var ie = !-[1,]; ... -
document.getElementsByClassName的理想实现
2011-12-20 14:41 1446来自: 司徒正美 blog http://www.cnblo ... -
浏览器支持的JS版本及JS对象图
2011-12-20 10:38 1090来自zh.wikipedia.org的JavaScript ... -
JS判断浏览器能力
2011-12-15 20:47 1059对象/特征检测法 该方法是一种判断浏览器能力(而非浏览器 ... -
onunload和onbeforeunload区别
2011-12-15 18:54 981Onunload,onbeforeunload都是在刷 ... -
收藏的两个多tab切换
2011-12-13 19:02 957留着可能以后有用
相关推荐
掌握Ajax使用 JSON 进行数据传输 掌握Ajax使用 JSON 进行数据传输 掌握Ajax使用 JSON 进行数据传输
### 掌握 Ajax 第 10 部分——使用 JSON 进行数据传输 #### 知识点一:理解 JSON 在 Ajax 中的作用 - **背景介绍**:随着 Web 应用程序的发展,Ajax(Asynchronous JavaScript and XML)技术成为了前端开发的重要...
### 使用JSON进行数据传输 #### 引言 在异步应用程序的世界里,数据传输成为连接客户端与服务器的关键桥梁。随着互联网技术的不断发展,数据格式的选择日益丰富,其中JSON(JavaScript Object Notation)作为一种...
当与服务器进行交互时,可以使用`send()`方法发送JSON数据。例如,将上面的JSON对象作为POST请求的数据发送: ```javascript var xhr = new XMLHttpRequest(); xhr.open('POST', 'http://example.com/api/user'); ...
在Android应用开发中,网络请求和JSON数据传输是不可或缺的部分,尤其在当今互联网时代,大部分应用程序都需要与服务器进行数据交互。JSON(JavaScript Object Notation)因其轻量级、易读写和易于处理的特性,成为...
下面,我们将深入探讨在JSP中使用JSON进行数据传输的具体方法和示例。 ### JSON在JSP中的应用 #### 1. **JSON的基础概念** - JSON是一种数据格式,用于存储和传输数据。 - 它由数据结构如数组和键值对组成,可以...
3. **数据传输**:在Web应用中,通常使用HTTP请求的`POST`方法携带JSON数据到服务器。客户端通过JavaScript的`fetch` API或者XMLHttpRequest对象将JSON数据以请求体的形式发送到Servlet。 4. **Servlet处理**:在...
这两种技术都可以创建SOAP(Simple Object Access Protocol)和RESTful类型的WebService,后者更倾向于使用Json进行数据传输。 二、C# WebService客户端 1. ASMX客户端:在C#中调用一个ASMX WebService,可以通过`...
在给定的例子中,`HttpUtils`类展示了如何使用`DefaultHttpClient`发送GET请求获取JSON数据。首先创建`HttpClient`实例,然后构造`HttpGet`对象,设置请求URL。接着执行请求并获取`HttpResponse`,从响应实体中提取...
"通过json进行传输数据的Js分页程序"这个主题,涉及到的主要知识点包括JSON的基本概念、JSON与JavaScript的关系、JSON在数据传输中的应用以及JavaScript实现分页的原理。 首先,JSON是一种轻量级的数据交换格式,它...
使用 JSON 改进 WEB 数据传输 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它可以将 JavaScript 对象转换成可以随请求发送的数据。与传统的纯文本和 XML 相比,JSON 具有许多优点,使其在 WEB...
介绍了AJax中传输数据的一种新形式:JSON
使用JSON进行数据传输相比传统的XML格式具有多方面的优势: 1. **轻量级:** JSON格式比XML格式更为简洁,它省略了XML中的许多冗余字符(如尖括号),因此在相同的数据内容下,JSON的体积更小,传输效率更高。 2. ...
综上所述,"JSON输出联系人"涉及到的关键技术点包括JSON格式的基本结构、在JavaScript中创建和解析JSON对象,以及在Web开发中使用JSON进行数据传输。了解并熟练掌握这些知识,对于进行Web应用开发至关重要。
#### 使用JSON进行数据传输 JSON最常见的用途是在客户端和服务端之间作为数据格式进行传递。它被广泛应用于Web应用中,特别是那些使用AJAX技术的应用。通过JSON格式的数据,Web服务器可以轻松地向客户端发送复杂的...
j2ee JSON数据传输
本示例主要讲解如何使用JSON进行数据传输以及解析,同时涉及到Android客户端和JSP服务端的交互。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。以下...
本文将深入探讨这三者结合在“php-curl+ajax+json数据传输2.0版本”中的应用。 首先,`PHP-cURL` 是一个在PHP中使用的库,它允许开发者通过URL来传输数据,支持多种协议,如HTTP、HTTPS、FTP等。`cURL` 提供了一种...