文斌的博客

学无止境
随笔 - 85, 文章 - 1, 评论 - 131, 阅读 - 26万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

javascript基础。Json语法讲解和应用

Posted on   文斌1988  阅读(1343)  评论(0编辑  收藏  举报

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,而且它是基于JavaScript 的。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript 等)。这些特性使JSON成为理想的数据交换语言

JSON有两种结构:

       /值”对的集合(A collection of name/value pairs)。在不同的语言中,它被理解为对象,结构,关联数组等

       值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组

这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能

下面的JSON表示名称/值对:

{ "firstName": "Brett" }

多个名称/值对串在一起:这是一个对象,有三个属性,分别是firstNamelastNameemail

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }

从语法方面来看,这与名称/值对相比并没有很大的优势,但是在这种情况下 JSON

更容易使用,而且可读性更好

当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性:

{ “employees": [

 { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },

 { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },

 { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }

] }

这比相应的XML格式表示的数据更加简洁:

相应的XML格式:

<employees>

< employee >

<firstName>Brett</firstName>

<lastName>McLaughlin</lastName>

<email>brett@newInstance.com</email>

</ employee >

< employee >

<firstName>Jason</firstName>

<lastName>Hunter</lastName>

<email>jason@servlets.com</email>

</ employee >

< employee >

<firstName>Elliotte</firstName>

<lastName>Harold</lastName>

<email>elharo@macfaq.com</email>

</employee>

</ employees >

 

可读性

       JSONXML的可读性可谓不相上下,XML略占上风

可扩展性

       XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。

编码难度

       XML有丰富的编码工具,比如Dom4jJDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了

解码难度

       XML的解析得考虑子节点父节点关系,让人头昏眼花,而JSON的解析难度几乎为零。

流行度

       XML已经被业界广泛的使用,而JSON才刚刚开始,但在Ajax领域,JSON凭借自身的优势有可能最终取代XML

JSONJavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的 API 或工具包。

JSON数据赋值给变量:

var company =

{ “employees": [

        { "firstName": "Brett", "lastName":"McLaughlin", "email": brett@newInstance.com" },

        { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },

        { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }

     ]

};这样将创建一个JavaScript对象

JavaScript对象的方式访问数据,如获取第一个雇员的firstName信息:

       company.employees[0].fristName

正如可以用点号和括号访问数据,也可以按照同样的方式轻松地修改数据:

       company.employees[0].fristName=“Vincent”

服务器端返回JSON相应的文本表示,如:

       {“city” : “Hefei”, “province” : “Anhui”}

客户端使用eval()函数将JSON文本转化为JavaScript对象:

Var response =eval”+request.responseText+”);

注意,使用额外的圆括号可使eval()函数将来源输入无条件地视为表达式进行解析。

然后从JavaScript对象中取得相应的值:

Document.getElementById(“city”).value=response.city;

Document.getElementById(“province”).value=response. province;

 

 

 

 

 

 

 

 

通过ajax访问远程页面,该页面返回值

if (isok)

                Response.Write( "{result:'success'}");

            else

                Response.Write( "{result:'failed'}");

 

==========调用返回的值----------------------------

var fnCallBack = function(oResult) {

              var oDiv = document.getElementById("divLoading");

               if (oDiv) {

                  oDiv.innerHTML = "";}

              var res = eval("("+oResult+")");

              if (res.result == "success")

                 alert("ok");

              else

                 alert("帐号或密码错误,请重试!");

 

           }

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示