当前位置: 首页 > 编程日记 > 正文

json学习之路

  总感觉自己比别人慢好几排,不知道到底多少,但至少一排吧???

一直很喜欢js,但刚开始编程的时候一直把js停留在"有效性验证"上,大大浪费了js.不过当时已经知道js很强大了,可以增加客户端用户体验,而具体怎么增加何如增加,不好意思不知道。而真正开始接触js的是学习ajax(Asynchronous JavaScript and XML),这次学习虽然也比较浅,但毕竟也是一个入门,同时也开始了CSS(Cascading Style Sheets)和DOM(Document Object Model)的入门学习。当然,从这时候开始,我知道js很强大很强大了,也知道了js其实是可以面向对象的。

刚开始项目的时候一直用asp,做联动效果的时候一直没有一个好的办法,当时的代码是从网上当下来的,看都特别郁闷。后来学了ajax,知道了xmlhttprequest对象,直到了异步这种方式。也慢慢开始在项目中摸索着用这种方式。

参加工作小四个月了,除了刚开始做一个拖拽效果的页面之外,好久没有动过js了。当时也用到了ajax,只是调用的是一个已经封装好的方法,返回的对象是json格式的。说句实话,当时是一头雾水,也是从那时开始知道json,告诉我要了解和会用和运用自如的一种js框架。

近期也看了一点JQuery的一些文章,园子里有一篇关于JQuery和JSON的文章,也拜读了一下。但感觉基础还是最重要的,现在我把刚读到的一片json官方网站的说明文档引过来和大家一起分享。希望和大家一起分享学习的快乐,同时也希望和大家可以一起交流。

  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的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

空白可以加入到任何符号之间。 以下描述了完整的语言。

  看完这篇介绍,我有几点看法。

  json的语法比较固定,我感觉有点借鉴了XML,吸收了XML语法的优点。还有就是json的易扩展性。“{}”就是一个对象,就是封装了一个对象。而":"之前的就是这个对象的"属性",":"之后则是"属性"的值。作为"属性"的值是可以任何扩展,或者说可以是任意种类型的值。这就符合了面向对象的三大特点中两个:封装和多态。当然,“多态”用在这里有点牵强。也难怪,在"OO"甚嚣尘上的时代,json是很容易被大家接受的。以上只是一点自己的看法,如果大家有点意见或者建议都可以给我留言。

  本文引自json的官方网站(http://www.json.org/json-zh.html)。当然,这里还有好多关于json的用法说明,大家有兴趣可以看一下。

  这里附上json,当然这个文件在json官方网站就可以下载。json.rar


转载于:https://www.cnblogs.com/hanyangecho/archive/2008/11/27/LearnJson.html

相关文章:

layoutSubviews 调用情况

init初始化不会触发layoutSubviews 但是是用initWithFrame 进行初始化时,当rect的值不为CGRectZero时,也会触发addSubview会触发layoutSubviews设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化滚动一个UIScrollView会触发la…

python基本数据类型之序列类型和映射类型

序列类型:字符串/元组/列表 映射类型:字典 更正::三引号也可以用来表示字符串,并且有额外用途:①搞定多行字符串 ②内用单引号和双引号 列表可以根据内容得到索引 有多个相同内容时根据第一个得到下标

关于EF中ApplyCurrentValues和ApplyOriginalValues区别

关于EF中ApplyCurrentValues和ApplyOriginalValues区别:两者都是编辑数据时使用。 // // 摘要: // 将 System.Data.Objects.ObjectStateEntry 的 System.Data.Objects.ObjectStateEntry.CurrentValues // 属性设置为与所提供对象的属性…

PHP Session中保存Object

在PHP中,使用Session保存Object时,PHP会将Object自动序列化。在读取Session变量时,准确地说是在session_start时,PHP会将Session中已序列化的Object反序列化。这时就需要Class的定义,Why?因为序列化时只是保…

kali linux网络配置

事情是这样的 今天早上想安装一个按个人信息生成密码的软件 发现无法安装 发现问题后 我首先检查了kali有没有获取到IP 然后就是没有获取IP 怎么解决问题如下: 原理进程: 1.写入dhcp服务 1.进行DNS设置 首先输入命令: gedit /etc/network/int…

流程快速开发平台,工作流引擎中间件,工作质量考核设计

为什么80%的码农都做不了架构师?>>> 工作质量考核设计关键字:CCBPM工作质量考核时效考核 需求背景:我们把在工作流程引擎中的考核分为两种模式,一种是时效考核、另外一种是质量考核。 时效考核就是对用户的操作进行时间点的记录&…

Windows 7 操作系统核心文件

【Windows\Boot】启动必须文件 【Windows\Help】帮助文件 【Windows\inf】安装硬件和软件时所需的inf文件 【Windows\System32】系统的主要组件 ActiveX文件(*.ocx)应用程序应用程序扩展(*.dll)控制面板项(*.cpl&#…

安装SQL SERVER2000提示注册表文件被挂起的解决方案

在安装SQL SERVER 2000时出现如下的提示: “以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机。” 按照提示重启计算机,再安装,仍然出现同样的提示。这是因为安装程序在先前的安装过程中在系统注册…

(C++)1046 Shortest Distance

#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std;int friendDis[100010] {0};//邻居节点间的距离 int withStDis[100010] {0};//和第一个结点的距离 --本题的题眼&#xff0c;空间换时间的典例int ma…

Lesson 59-60 Househusband

1 particular 特别的&#xff0c;挑剔的adj eg. Ted was very particular about the color he used.特德在用色上非常讲究 2 freelance 自由作家n 自由的adj 当自由职业者vi eg. Michael Cross is a freelance journalist.迈克尔克罗斯是一名自由新闻记者。 eg. She has freela…

META Header

response.setHeader 是用来设置返回页面的头 meta 信息, 使用时 response.setHeader( name, contect ); meta是用来在HTML文档中模拟HTTP协议的响应头报文。meta 标签用于网页的<head>与</head>中 1、<meta name"Generator" contect"">用…

ubuntu安装deepin terminal 终端

1. 依赖库 sudo apt-get install libatk1.0-0 libc6 libcairo-gobject2 libcairo2 libfontconfig1 libfreetype6 libgdk-pixbuf2.0-0 libgee-0.8-2 libglib2.0-0 libgnutls30 libgtk-3-0 libjson-glib-1.0-0 libpango-1.0-0 libpangocairo-1.0-0 libsecret-1-0 libvte-2.91-0…

(C++)1010 一元多项式求导 --需二刷

笔记&#xff1a;学习利用数组下标表示序列之外信息的方法 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std;int main(){int num[1010] {0}; //num[a] b 其中a是系数&#xff0c;b是指数 int coe,id…

window resize和scroll事件的基本优化

转自 http://www.kankanews.com/ICkengine/archives/6564.shtml转载于:https://www.cnblogs.com/wybie/p/3916298.html

Mob之社会化分享集成ShareSDK

接着上篇顺便分享一篇自己使用 ShareSDK 的笔记&#xff0c;上篇我们集成了 SMSSDK 完成了短信接收验证码的功能&#xff0c;请参考Mob 之 短信验证集成 SMSSDK&#xff0c;如何在项目已经集成 SMSSDK 的情况下集成 ShareSDk 到项目中&#xff0c;上一篇中我们集成 SMSSDK 使用…

今天開始學習silverlight了

今天開始學習silverlight了,雖然集團里面很多的計算機安裝的系統是winpro2000,但老大說先不管,那只有學了,請大家多幫忙,發此貼留記號 转载于:https://www.cnblogs.com/dotneter/archive/2008/12/05/1348600.html

(C++)1002 A+B for Polynomials

笔记&#xff1a;1.两个不为0的数相加可能为0 2.浮点数的比较方法 3.输出的时候格式怎么办 本题空格放在哪有门道 4.不需要三个数组&#xff0c;一个就可以了&#xff0c;第二个“数组”输入的时候直接加在第一个上面 #include<cstdio> #include<cmath> #inclu…

(转)Unity3D - 性能优化之Draw Call

Unity&#xff08;或者说基本所有图形引擎&#xff09;生成一帧画面的处理过程大致可以这样简化描述&#xff1a;引擎首先经过简单的可见性测试&#xff0c;确定摄像机可以看到的物体&#xff0c;然后把这些物体的顶点&#xff08;包括本地位置、法线、UV等&#xff09;&#x…

Drill storage plugin实现原理分析

Drill Storage Plugin介绍 Drill是一个交互式SQL查询引擎&#xff0c;官方默认支持的数据源有hive、hbase、kafka、kudu、mongo、opentsdb、jdbc等&#xff0c;其中jdbc storage plugin可以覆盖所有支持jdbc协议的数据源&#xff0c;如&#xff1a;mysql、oracle等关系型数据库…

C# 创建控制台应用程序

C#的语法总结将全部通过控制台应用程序总结。 一、文件-》新建项目 二、 三、创建后的界面。 转载于:https://www.cnblogs.com/nevernet/archive/2008/12/08/1350024.html

(C++)1009 Product of Polynomials

笔记&#xff1a;1.如果开三个数组&#xff0c;乘积数组的大小是2*10^3&#xff0c;而不是10^6&#xff08;汗颜&#xff09;&#xff0c;如果开后者那么大的数组&#xff0c;需要定义在main函数外面了(实现一) 2.注意到double数组可能是非常稀疏的&#xff0c;为了减少运算量…

lispbox 安装运行.sh的时候出现 lispbox.sh: 2: lispbox.sh: Bad substitution

安装lispbox时使用tar命令将压缩文件解压之后cd进入之后在运行.sh文件时出现了如下情况。 $ sh lispbox.sh lispbox.sh: 2: lispbox.sh: Bad substitution 提示 bad substitution 这是因为linux有不同的shell 使用sh运行错误应该使用bash运行即可。 改成bash -x lispbox.sh即可…

Python-字符串操作方法 [转]

Python-String-Function 字符串中字符大小写的变换&#xff1a; * S.lower() #小写 * S.upper() #大写 * S.swapcase() #大小写互换 * S.capitalize() #首字母大写 * String.capwords(S) #这是模块中的方法。它把S用split()函数分开&#xff0…

旅行家的预算[贪心]

题目 Problem description 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市&#xff08;假设出发时油箱是空的&#xff09;。给定两个城市之间的距离D1、汽车油箱的容量C&#xff08;以升为单位&#xff09;&#xff0e;每升汽油能行驶的距离D2、出发点每升汽油价格P和…

(C++)1028 人口普查

笔记&#xff1a;把年龄转化成一个七位的整数是创举&#xff0c;但是要想清楚&#xff0c;年龄越大&#xff0c;这个数字越小orz #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std;struct person{char n…

说说.net事件和委托。

一说到.net的事件&#xff0c;也许你会想都说教程满天飞&#xff0c;一个被说烂了的东西还有什么可以说的啊&#xff1f;是啊&#xff0c;的确有很多好文章剖析事件&#xff0c;比如张子阳先生的C# 中的委托和事件重温Observer模式--热水器改 这两篇文章让我弄懂了委托、事件和…

【cs229-Lecture2】Linear Regression with One Variable (Week 1)(含测试数据和源码)

从Ⅱ到Ⅳ都在讲的是线性回归&#xff0c;其中第Ⅱ章讲得是简单线性回归&#xff08;simple linear regression, SLR&#xff09;&#xff08;单变量&#xff09;&#xff0c;第Ⅲ章讲的是线代基础&#xff0c;第Ⅳ章讲的是多元回归&#xff08;大于一个自变量&#xff09;。 本…

101种设计模式

https://sourcemaking.com/design-patterns-and-tips

(C++)1032 挖掘机技术哪家强

笔记&#xff1a;考虑到输入只有一所学校&#xff0c;且得分还为0的特殊情况&#xff0c;应该把high初始化为1 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std;int grds[100010] {0};int main(){int …