从cnblogs中,JSON可以将JavaScript对象中表示的一组数据转换为字符串,然后您可以轻松地在函数之间传递此字符串,或在异步应用程序中从Web客户端传递该字符串. 程序. 这个字符串看起来有些奇怪,但是JavaScript可以轻松解释它,并且JSON可以表示比“名称/值对”更复杂的结构. 例如,您可以表示数组和复杂的对象,而不仅仅是键和值的简单列表.以最简单的形式,您可以使用JSON这样的形式来表示“名称/值对”:{“名字”: “布雷特”}此示例非常基础,实际上比等效的纯文本“名称/值对”占用更多空间:firstName = Brett但是,当多个“名称/值对”串在一起时,JSON将显示其值. 首先,您可以创建一个包含多个“名称/值对”的记录,例如:{“ firstName”: “ Brett”,“ lastName”: “ McLaughlin”,“ email”: “ aaaa”}从语法的角度来看,与“名称/值对”相比,它没有太大的优势,但是在这种情况下,JSON更易于使用且更具可读性. 例如,它清楚地表明以上三个值都是同一条记录的一部分;花括号使这些值具有一定关系.当您需要表示一组值时,JSON不仅可以提高可读性,而且可以降低复杂性. 例如,假设您要代表一个名称列表. 在XML中,需要许多开始和结束标记. 如果使用典型的名称/值对(如本系列前几篇文章中看到的名称/值对),则必须建立专有数据格式,或将键名修改为person1-firstName形式.如果使用JSON,则只需将带有大括号的多个记录组合在一起:{“人”: [{“ firstName”: “ Brett”,“ lastName”: “ McLaughlin”,“ email”: “ aaaa”}。{“ firstName”: “ Jason”,“ lastName”: “ Hunter”,“ email”: “ bbbb”}。{“ firstName”: “ Elliotte”,“ lastName”: “ Harold”,“ email”: “ cccc”}]}这并不难理解. 在此示例中,只有一个名为people的变量,该值是一个包含三个条目的数组,每个条目都是一个人的记录,其中包含名字,姓氏和电子邮件地址. 上面的示例显示了如何使用括号将记录合并为一个值. 当然,您可以使用相同的语法来表示多个值(每个值包含多个记录):{“程序员”: [{“ firstName”: “ Brett”,“ lastName”: “ McLaughlin”,“ email”: “ aaaa”}。{“ firstName”: “ Jason”,“ lastName”: “ Hunter”,“ email”: “ bbbb”}。{“ firstName”: “ Elliotte”,“ lastName”: “ Harold”,“ email”: “ cccc”}]。“作者”: [{“ firstName”: “ Isaac”,“ lastName”: “ Asimov”,“ genre”: “ sciencefiction”}json字符串数组格式。{“ firstName”: “ Tad”,“ lastName”: “ Williams”,“ genre”: “ fantasy”}。{“ firstName”: “ Frank”,“ lastName”: “ Peretti”,“ genre”: “ christianfiction”}]。“音乐家”: [{“ firstName”: “ Eric”,“ lastName”: “ Clapton”,“ instrument”: “ guitar”}。{“ firstName”: “ Sergei”,“ lastName”: “ Rachmaninoff”,“ instrument”: “ piano”}]}这里最值得注意的是它可以表示多个值,并且每个值又包含多个值. 但是,还应注意,记录中的实际名称/值对在不同的主要项目(程序员,作者和音乐家)之间可能有所不同. JSON完全是动态的,可让您更改数据在JSON结构中间表示的方式.处理JSON格式的数据时,没有预定义的约束要遵循. 因此,在相同的数据结构中,可以改变表示数据的方式,甚至可以用不同的方式来表示同一事物.掌握JSON格式后,很容易在JavaScript中使用它. JSON是一种原生JavaScript格式,这意味着不需要特殊的API或工具包即可处理JavaScript中的JSON数据.例如,您可以创建一个新的JavaScript变量,然后直接为其分配JSON格式的数据字符串:varpeople = {“程序员”: [{“ firstName”: “ Brett”,“ lastName”: “ McLaughlin”,“ email”: “ aaaa”}。{“ firstName”: “ Jason”,“ lastName”: “ Hunter”,“ email”: “ bbbb”}。{“ firstName”: “ Elliotte”,“ lastName”: “ Harold”,“ email”: “ cccc”}]。“作者”: [{“ firstName”: “ Isaac”,“ lastName”: “ Asimov”,“ genre”: “ sciencefiction”}。{“ firstName”: “ Tad”,“ lastName”: “ Williams”json字符串数组格式,“ genre”: “ fantasy”}。{“ firstName”: “ Frank”,“ lastName”: “ Peretti”,“ genre”: “ christianfiction”}]。“音乐家”: [{“ firstName”: “ Eric”,“ lastName”: “ Clapton”,“ instrument”: “ guitar”}。{“ firstName”: “ Sergei”,“ lastName”: “ Rachmaninoff”,“ instrument”: “ piano”}]}这很简单;现在人们包含了前面看到的JSON格式的数据. 但是,这还不够,因为访问数据的方式似乎并不明显.尽管看起来不太明显,但上面的长字符串实际上只是一个数组;将数组放入JavaScript变量后,您可以轻松访问它. 实际上,您只需要使用点表示法来表示数组元素. 因此,要访问程序员列表中第一个条目的姓氏,只需在JavaScript中使用以下代码:people.programmers [0] .lastName;请注意,数组索引从零开始. 因此,这行代码首先访问people变量中的数据;然后将其移至称为程序员的项目,然后移至第一条记录([0]);最后,它访问lastName键的值. 结果是字符串值“ McLaughlin”.以下是使用相同变量的一些示例.people.authors [1] .genre // Valueis是“幻想”people.musicians [3] .lastName //未定义. 这指的是第四次输入和提示音people.programmers [2] .firstName //值是“ Elliotte”使用这种语法,您可以使用JSON格式处理任何数据,而无需使用任何其他JavaScript工具包或API.就像可以使用点和括号来访问数据一样,您可以通过以下方式轻松修改数据:people.musicians [1] .lastName =“ Rachmaninov”;将字符串转换为JavaScript对象后,您可以像这样修改变量中的数据.当然,如果您不容易将对象转换回本文中提到的文本格式,则所有数据修改都没有什么价值. 这种转换在JavaScript中也非常简单:StringnewJSONtext = people.toJSONString();就是这样!现在,您有了一个可以在任何地方使用的文本字符串,例如,您可以在Ajax应用程序中将其用作请求字符串.更重要的是,任何JavaScript对象都可以转换为JSON文本. 不仅可以处理最初用JSON字符串分配的变量. 为了转换名为myObject的对象,只需执行相同形式的命令:StringmyObjectInJSON = myObject.toJSONString();这是JSON与本系列中讨论的其他数据格式之间的最大区别. 如果使用JSON,只需调用一个简单的函数,就可以获取格式化的数据,也可以直接使用它. 对于其他数据格式,您需要在原始数据和格式化数据之间进行转换. 即使您使用了像DocumentObjectModel这样的API(提供了将自己的数据结构转换为文本的功能),您也需要学习此API并使用API?的对象,而不是使用本机JavaScript对象和语法.最终结论是,如果您要处理大量JavaScript对象,那么JSON几乎肯定是一个不错的选择,因此您可以轻松地将数据转换为可以发送到服务器端程序的格式在请求中.1. 该对象是“名称/值对”的无序集合. 对象以“ {”(左括号)开头,以“}”(右括号)结尾. 每个“名称”后跟一个“: ”(冒号); “名称/值”对之间用“,”(逗号)分隔. (如图所示,图中数据的表示方式与非确定性自动机的形式相似. 那些不了解编译原理的人可能很难理解它. 实际上,它也是这种形式正则表达式. 下同)2. 数组是值的有序集合. 数组以“ [”(左括号)开始,以“]”(右括号)结束. 使用“,”(逗号)分隔值.3. 该值可以是用双引号引起来的字符串,数字,true,false,null,对象或数组. 这些结构可以嵌套.4. 字符串是由双引号引起来的任意数量的Unicode字符的集合,以反斜杠转义. 字符(字符)是单个字符串(characterstring). 字符串与C或Java字符串非常相似.5. 该数字(数字)也与C或Java的数字非常相似. 删除未使用的八进制和十六进制格式. 删除一些编码详细信息.一起生活,还是一个人死吧!