开发者社区> needrunning> 正文

json---服务器端与客户端的故事

简介:       认识json       资料来自 http://www.learn-ajax-tutorial.com/Json.cfm     var Beatles = ["Paul","John","George","Ringo"]; This is the equi...
+关注继续查看

     

      认识json

      资料来自 http://www.learn-ajax-tutorial.com/Json.cfm

 

 

var Beatles = ["Paul","John","George","Ringo"];
This is the equivalent of:
等同于
var Beatles = new Array("Paul","John","George","Ringo");

 

 

 

JavaScript Object Notation (JSON)
JSON is a lightweight format for exchanging data between the client and server.
Json是一种在服务器端和客户端交换数据的轻量级数据格式。

It is often used in Ajax applications because of its simplicity and because its format is based on JavaScript object literals.

由于它基于js的语法格式和简洁性经常被用于ajax应用程序中。

We will start this lesson by learning JavaScript's object-literal syntax and then we will see how we can use JSON in an Ajax application.

我们将从学习js的语法开始,之后我们将明白怎样在ajax的应用程序中应用json。

Object Literals

We saw earlier how to create new objects in JavaScript with the Object() constructor.

我们很容易的明白在js中如何使用Object()构造器创建对象。

Array literals are created with square brackets as shown below:

数组值按以下方式用中括号创建

 

Object literals are created with curly brackets:

对象值用大括号创建

 

var Beatles = {
 "Country" : "England",
 "YearFormed" : 1959,
 "Style" : "Rock'n'Roll"
}
等同于:
This is the equivalent of: var Beatles = new Object();Beatles.Country = "England";
Beatles.YearFormed = 1959;
Beatles.Style = "Rock'n'Roll";

Just as with all objects in JavaScript, the properties can be references using dot notation or bracket notation.

如同js中的所有对象一样,熟悉可以用逗号和方括号引用

alert(Beatles.Style); //Dot Notation

alert(Beatles["Style"]); //Bracket Notation

Arrays in Objects

对象可以包含数组

Object literals can contain array literals:

 

var Rockbands = [
{
"Name" : "Beatles",
"Country" : "England",
"YearFormed" : 1959,
"Style" : "Rock'n'Roll",
"Members" : ["Paul","John","George","Ringo"]
},
{
"Name" : "Rolling Stones",
"Country" : "England",
"YearFormed" : 1962,
"Style" : "Rock'n'Roll",
"Members" : ["Mick","Keith","Charlie","Bill"]
}
]

JSON

http://www.json.org Json被描述为:

   1 一种轻量级的数据交换格式

   2 容易的读写

   3 使机器容易生出和解析

Json

On the JSON website (http://www.json.org), JSON is described as:

   1. a lightweight data-interchange format

   2. easy for humans to read and write

   3. easy for machines to parse and generate

 

     The JSON syntax is like JavaScript's object literal syntax except that the objects cannot be assigned to a variable. JSON just represents    the data itself.

     除了对象值不能赋值于一个变量以外,json的语法与js的语法很相似。Json仅仅描述它自己的数据

JSON Parsers

      As JSON is just a string of text and not an object in and of itself, it needs to be converted to an object before to make it useful.

      Although this can be done in JavaScript with the eval() function, it is safer to use a JSON parser.

      Json只是一串文字,而不是一个对象,它需要转换成对象才会变的有用。

      虽然在js中可以使用eval()函数实现转换,但是使用json parser会更安全一些。你可以在http://www.json.org/json.js下载JSON parser

      You can download the JavaScript JSON parser at http://www.json.org/json.js.

      你可以在http://www.json.org/json.js下载JSON parser

下面我们将介绍客户端和服务器端的数据通信:

The process for sending data between the browser and server with JSON is as follows:

1. On the client-side:

o    Create a JavaScript object using the standard or literal syntax.

o    Use the JSON parser to stringify the object.

o    Send the URL-encoded JSON string to the server as part of the HTTP Request. This can be done using the HEAD, GET or POST method by assigning the JSON string to a variable. It can also be sent as raw text using the POST method, but this may create extra work for you on the server-side.

2. On the server-side:

o    Decode the incoming JSON string and convert the result to an object using a JSON parser for the language of your choice. At http://www.json.org, you'll find JSON parsers for many modern programming languages. The methods available depend upon which parser you are using. See the parser's documentation for details.

o    Do whatever you wish with the object.

o    If you wish to send JSON back to the client:

§  Create a new object for storing the response data.

§  Convert the new object to a string using your JSON parser.

§  Send the JSON string back to the client as the response body (e.g, Response.Write(strJSON), echo $strJSON, out.write(strJSON) etc.).

3. On the client-side:

o    Convert the incoming JSON string to an object using the JavaScript JSON parser.

o    Do whatever you wish with the object.

o    And so on...

在客户端:

  1) 用标准的语法创建js对象

  2) 用 JSON parser处理对象

  3) 作为http请求的一部分向服务器端发送url编码过的json字符串,可以将json赋值给一个原始变量用head,get或者post方法完成。也可以使用post方法发送原始的文字,但是这样会为服务器端增加额外的工作。

在服务器端

1)    解码json字符串,使用json parser和你使用的语言将其转换为一个对象。http://www.json.org,上你将找到许多现代编程语言装备的json转换器。方法的可用性取决于你所选用的语言。更多细节可以参看文档。

2)    使用对象进行操作

3)    如果你想返回客户端json数据
     1)创建一个用于存储输出数据的对象
     2)使用json parser将新对象转换为字符串
     3) 向客户端发送json字符串

在客户端:

1)    将json解析为js对象

2)    操作对象

3)    或者其它

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
YApi 官网说明文档-接口操作
为方便和前端, 节省沟通成本, 编写接口文档非常有比较 使用过swagger, 觉得入侵性太大. POST又感觉和项目结合的不太紧密. 所以一直在寻找 新的接口阅读/生成/测试工具. 下面介绍一下YApi.
5 0
谈谈你对SSM简答题的理解 && SpringMVC执行流程
谈谈你对SSM简答题的理解 && SpringMVC执行流程
5 0
Python + highcharts 制作世界各地主题公园分布网站
Python + highcharts 制作世界各地主题公园分布网站
5 0
Android中TextView与EditText控件实现禁止换行
Android中TextView与EditText控件实现禁止换行
4 0
【Servlet进阶】暴肝两万五千字助你通关Servlet
在之前我们已经学过Servlet初级入门的一部分内容了,今天我们继续来学习Servlet,但是你如果对Servlet还不了解的话那么建议你先去看一下我之前写过的入门的部分。
3 0
【EL与JSTL表达式】学习JSP之后,这是你不得不知道的技术
之前我们已经完成了对JSP的学习,但是还有一些其他的东西我们必须得知道,今天我们来学习EL与JSTL表达式。它们将简化JSP的书写并且使得JSP更加强大。但是如果你对JSP一无所知的话建议你先去看一下之前入门JSP的文章。
7 0
Markdown 拓展-免费图床/网盘方案
前言 最近时常在 gitee.io 上写一些 markdown 格式的文章,所以亟需获取免费的图床服务。要求是最好还能自定义文件名。
11 0
Android Studio快捷键以及使用技巧
Android Studio快捷键以及使用技巧
4 0
Struts,你为何死不悔改!
上篇文章《诡异的字符串问题。。。》的问题已经解决了,我一直相信「团队力量的重要性」,虽然我不能保证加入群的每一个人都是乐于分享的同学,但我始终群里的各位同学总会慢慢被我们这种乐于分享的群氛围所影响。就以上篇文章为例,群里的 Univechige 同学专门给 IntelliJ IDEA 官方发邮件寻求原因,这便是一个好的开端,我相信有各位同学的共同维护,后面群氛围会越来越好。下面给出 IDEA 官方的答复,见下图。
5 0
+关注
needrunning
7年互联网软件开发经验积累了丰富的团队合作,开发设计经验。 技术特长在于基于NET,PHP平台后端开发技术,涉及网站,云端服务,APP等方面设计开发,对MongoDb,Redis等数据库选型和实践应用有丰富的使用经验。对人工智能大数据方面有一定涉猎。
95
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载