JSON基础

转自http://blog.youkuaiyun.com/lovehongyun/article/details/2971341#comments

 

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

JSON建构于两种结构:

“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

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

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

JSON具有以下这些形式:

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

值(value)可以是双引号括起来的字符串(string)、数值(number)、truefalsenull、对象(object)或者数组(array)。这些结构可以嵌套。

字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

字符串(string)与C或者Java的字符串非常相似。

数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

空白可以加入到任何符号之间。 以下描述了完整的语言。(以上部分摘自:http://www.json.org/json-zh.html)

JSON举例(javascript中使用json):

先来个最简单的:

  1. <script type="text/javascript">
  2.         var user = {"Id":1,"Name":"Hubery","Age":23,"Email":"hubery@163.com"};
  3.         alert(user.Id); //这样访问也没问题alert(user["Id"]);
  4.         alert(user.Name);
  5.         alert(user.Age);
  6.         alert(user.Email);
  7. </script>

我们添加Address属性,定义更细的用户信息结构:

  1. <script type="text/javascript">
  2. var user =
  3.           {
  4.             "Id":1,
  5.             "Name":"Hubery",
  6.             "Age":23,
  7.             "Address":
  8.               {
  9.                   "City":"Beijing","ZipCode":"111111"
  10.               },
  11.             "Email":"hubery@163.com"
  12.           };
  13.          
  14.           alert(user.Id);
  15.           alert(user.Name);
  16.           alert(user.Age);
  17.           alert(user.Address.City);
  18.           alert(user.Address.ZipCode);
  19.           alert(user.Email);
  20. </script>

下面我们把Address属性定义成数组,用户有两个Address:

  1. <script type="text/javascript">
  2. var user =
  3.           {
  4.             "Id":1,
  5.             "Name":"Hubery",
  6.             "Age":23,
  7.             "Address":
  8.               [
  9.                 {"City":"Beijing","ZipCode":"111111"},
  10.                 {"City":"Langfang","ZipCode":"222222"}
  11.               ],
  12.             "Email":"hubery@163.com"
  13.           };
  14.          
  15.           alert(user.Id);
  16.           alert(user.Name);
  17.           alert(user.Age);
  18.           alert(user.Address[0].City);//还可以这样:alert(user.Address[0]["City"]);
  19.           alert(user.Address[0].ZipCode);
  20.           alert(user.Address[1].City);
  21.           alert(user.Address[1].ZipCode);
  22.           alert(user.Email);
  23. </script>

如果我们想要一个用户列表,能行吗?答案是,没问题!

  1. <script type="text/javascript">
  2. var user =
  3.           [
  4.               {
  5.                 "Id":1,
  6.                 "Name":"Hubery",
  7.                 "Age":23,
  8.                 "Address":
  9.                   [
  10.                     {"City":"Beijing","ZipCode":"111111"},
  11.                     {"City":"Langfang","ZipCode":"222222"}
  12.                   ],
  13.                 "Email":"hubery@163.com"
  14.               },
  15.               {
  16.                 "Id":2,
  17.                 "Name":"Chris",
  18.                 "Age":24,
  19.                 "Address":{"City":"Beijing","ZipCode":"100085"},
  20.                 "Email":"chris@163.com"
  21.               }
  22.           ]
  23.          
  24.           alert("Id: "+user[0].Id+"/r/nName: "+
  25.           user[0].Name+"/r/nAge: "+
  26.           user[0].Age+"/r/nAddress: ("+
  27.           user[0].Address[0].City+","+user[0].Address[0].ZipCode+") ("+user[0].Address[1].City+","+user[0].Address[1].ZipCode+")/r/nEmail: "+
  28.           user[0].Email);
  29.          
  30.           alert("Id: "+user[1].Id+"/r/nName: "+
  31.           user[1].Name+"/r/nAge: "+
  32.           user[1].Age+"/r/nAddress: ("+
  33.           user[1].Address.City+","+user[1].Address.ZipCode+")/r/nEmail: "+
  34.           user[1].Email);
  35. </script>
CH341A编程器是一款广泛应用的通用编程设备,尤其在电子工程和嵌入式系统开发领域中,它被用来烧录各种类型的微控制器、存储器和其他IC芯片。这款编程器的最新版本为1.3,它的一个显著特点是增加了对25Q256等32M芯片的支持。 25Q256是一种串行EEPROM(电可擦可编程只读存储器)芯片,通常用于存储程序代码、配置数据或其他非易失性信息。32M在这里指的是存储容量,即该芯片可以存储32兆位(Mbit)的数据,换算成字节数就是4MB。这种大容量的存储器在许多嵌入式系统中都有应用,例如汽车电子、工业控制、消费电子设备等。 CH341A编程器的1.3版更新,意味着它可以与更多的芯片型号兼容,特别是针对32M容量的芯片进行了优化,提高了编程效率和稳定性。26系列芯片通常指的是Microchip公司的25系列SPI(串行外围接口)EEPROM产品线,这些芯片广泛应用于各种需要小体积、低功耗和非易失性存储的应用场景。 全功能版的CH341A编程器不仅支持25Q256,还支持其他大容量芯片,这意味着它具有广泛的兼容性,能够满足不同项目的需求。这包括但不限于微控制器、EPROM、EEPROM、闪存、逻辑门电路等多种类型芯片的编程。 使用CH341A编程器进行编程操作时,首先需要将设备通过USB连接到计算机,然后安装相应的驱动程序和编程软件。在本例中,压缩包中的"CH341A_1.30"很可能是编程软件的安装程序。安装后,用户可以通过软件界面选择需要编程的芯片类型,加载待烧录的固件或数据,然后执行编程操作。编程过程中需要注意的是,确保正确设置芯片的电压、时钟频率等参数,以防止损坏芯片。 CH341A编程器1.3版是面向电子爱好者和专业工程师的一款实用工具,其强大的兼容性和易用性使其在众多编程器中脱颖而出。对于需要处理25Q256等32M芯片的项目,或者26系列芯片的编程工作,CH341A编程器是理想的选择。通过持续的软件更新和升级,它保持了与现代电子技术同步,确保用户能方便地对各种芯片进行编程和调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值