对JSON的一点认识和理解以及JQuery处理JSON

JSON(JavaScript Object Notation)javscript对象标记,是一种轻量级的数据交换格式。具体的详细基础知识可以参考JSON官网http:/www.json.org/

不说太多废话,直接说说我对JSON的理解吧。

一、JSON的一些基础知识。

JSON中对象通过“{}”来标识,一个“{}”代表一个对象,如{“AreaId”:”123”},对象的值是键值对的形式(keyvalue)。

 

[]”,标识数组,数组内部各个数据之间通过“,”分割,如[“AreaId”:”123””AreaId”:”345”]

很多情况下是对象数组,那就是这样:

[{“AreaId”:”123”},{“AreaId”:”345”}]

 

其实数组也是一个对象,上面的格式也可以写成这样:

{Area”:[{“AreaId”:”123”},{“AreaId”:”345”}]}

这表示一个Area对象,他有两个子数据,每个子数据也是一个对象,每个子对象都是AreaId

 

JSON中字符串和字符的定义格式和一般的类C语言定义是类似的,双引号定义字符串,单引号定义字符。

JSON的键(Key)用双引号括起来,比如上面的“Area“和”AreaId“,都是用双引号括起来的,在一些语言中构造JSON字符串的时候,可以使用转义字符转义双引号。

 

二、javascript操作JSON字符

1、先要区分JSON字符串和JSON对象

JSON字符串:

Var strJSON = “{\“Area\”[{\“AreaId\”:\”123\”},{\“AreaId\”:\”345\”}]}”

其实也可以写成这样:

Var strJSON = ‘{“Area”[{“AreaId”:”123”},{“AreaId”:”345”}]}’

这表示一个JSON字符串,由于在Js中单引号和双引号都可以表示一个字符串,所以上面第一个使用双引号和第二个使用单引号的都表示一个JSON字符串。

下面看看JSON对象

Var JSON = {“Area”[{“AreaId”:”123”},{“AreaId”:”345”}]},

看到了吧,JSON对象最外面是没有单引号或者双引号的,这就表示一个JSON对象。

 

2JSON字符串向JSON对象转换

直接只用JSeval()方法。

如上面的strJSON字符串可以这样转换为JSON对象

Var JSON = eval”(”+strJSON+”)”),

这样就转换为JSON对象了。

 

据说使用jseval()方法有安全上的问题,所以好多人推荐使用JSON官网的json.js包进行转换,但是我去JSON官网下载这个包的时候,发现只有一句话那就是alert(’error’)。不知什么原因,哪位有知道的希望告知一下。

 

由于使用的JQuery,而且听说Jquery和json.js有冲突,于是参考JQuery 和 json.js 冲突问题这篇文章下载了处理jsonjquery插件。

那个插件挺好用的,比如以上的把json字符串转换为JSON对象:

Var JSON = $.parseJSON(strJSON);

这样就可以使用JSON对象了。

其实在Jquery1.4.1之后JQuery也已经添加了对JSON处理的方法,方法名也是parseJSON(str),具体使用也是和上面一样,如果你使用的是1.4.1之后的版本那就不用上面的那个插件了,直接用那个方法就可以了。

如果要是使用Jquery的ajax方法,也可以直接使用getJSON方法,就可以直接获得JSON对象,无需转换。

3、处理JSON数据

获得JSON对象后,就应该处理JSON对象了,比如通过前面的那个strJSON字符串获得JSON对象之后,可以这样获得JSON对象的值

Var firstAreaId = JSON.Area[0].AreaId.

JSON是刚才生成的JSON对象,Area[0]表示JSON对象的第一个Area对象(因为Area对象有两个子对象),AreaId就是要获得子对象的数据。

好了,就写这些吧,如果有不对的地方,请大家指正。

转载于:https://www.cnblogs.com/acles/archive/2011/03/30/1999479.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络硬盘

不知道自己确切从何时对各种IT玩意儿开始极其关注的,我以前不是这样,至少在大学时不是这样,虽然是学计算机的。但现在总是喜欢尝试这些东西,今天试了试Mofile,一个网络硬盘,看起来不错的样子,且…

SUB指令

形式: SUB dest, source功能: 从目的操作数中减去源操作数 .data var1 DWORD 30000h var2 DWORD 10000h .code mov eax,var1 ;EAX 30000h sub eax,var2 ;EAX 20000h几种形式: sub 寄存器,数据 比…

php 查看 实例 的方法,php – 从Laravel 5.1中的通用数据库查询中获取Eloquent模型的实例...

我有不同关系的模型.假设我的Entry模型属于供应商,所以通常我的模型文件中有一个supplier()方法.到目前为止一切都那么好,当我有一些像Entry :: find(1) – >供应商这样的产品时,效果非常好.然而,什么是无效的是当我从Laravel中的通用DB ::查询中获取条目时,我显然无法访问s…

ejs获取js变量值_EJS变量(注入值)

ejs获取js变量值Hi! Welcome to NODE AND EJS TEMPLATE ENGINE SERIES. Today, we will talk about EJS variables or how we can inject values? 嗨! 欢迎使用NODE和EJS模板引擎系列。 今天,我们将讨论EJS变量或如何注入值? Just like nor…

POP和PUSH指令

PUSH指令: 首先减少 ESP 的值,再将源操作数复制到堆栈。操作数是 16 位的,则 ESP 减 2,操作数是 32 位的,则 ESP 减 4。PUSH 指令有 3 种格式: PUSH reg/mem16 PUSH reg/mem32 PUSH inm32POP指令&#xff…

Visual Basic 9.0 前沿播报·静态篇(六)松弛委托和可为空类型语法增强

本期介绍的两个VB9作为数据开发辅助功能的新特性。CLR在.NET 2.0增加了许多关于委托的新特性(但大部分都不为任何语言所支持),其中一个叫做协变的特性允许放松委托与函数绑定时的签名检查(C# 2.0支持)。为了追求更高的…

android_Text

....转载于:https://www.cnblogs.com/dwpcny/archive/2011/03/30/2000239.html

scala 函数调用_在Scala中按名称调用函数

scala 函数调用函数按名称调用 (Functions call by name ) By default, the method of parameter passing in a programming language is "call by value". In this, the parameter is passed to a function which makes a copy of them an operates on them. In Sca…

电脑PHP漏洞啥意思,PHP漏洞详解

几个重要的php.ini选项Register Globalsphp>4.2.0,php.ini的register_globals选项的默认值预设为Off,当register_globals的设定为On时,程序可以接收来自服务器的各种环境变量,包括表单提交的变量,而且由于PHP不必事先初始化变量的值,从而导致很大的安全隐患.例1://check_adm…

3年前的小程序:破解需要delphi IDE 环境的vcl 控件

基本原理:有些vcl组件未注册的话,会显示没有注册的信息,但在设计期间不显示这些信息,表示该组件会检查delphi的ide 环境,解决办法就是让自己的exe带上ide的信息;组件检查ide的办法无非就是使用api查找特定的…

执行POP和PUSH指令后,SS和SP的变化

我们知道push指令是将数据送入栈中,pop指令是将数据从栈顶取出来,8086CPU的入栈和出栈操作都是以字为单位的 比如说将10000H-1000FH这段内存当做栈使用 CPU是通过CS、IP中存放的段地址和偏移地址来知道当前要执行的指令,通过DS和[address]来…

python 文件遍历

1. import os,sys r raw_input(“type a directory name”) for root, dirs, files in os.walk(r): for f in files: print root, os.sep, f;2. import os,sys def walkdir(dirname): try: ls os.listdir(dirname) except: print ‘access deny’ else: for l in ls: temp o…

win7 php 上传文件,在LNMP原来的基础上,win7环境下如何上传PHP文件到Linux环境下...

首先,下载一个WINSCP客户端连接主机后,上传文件到自己的保存目录接着进入数据库添加我们的数据库mysql -uroot -p //这个是进入mysql的命令,但是要是你没有加 ln -s /usr/local/mysql/bin/mysql /usr/bin 的话就要输入下面那一行/usr/loc…

HDFC的完整形式是什么?

HDFC:住房发展金融公司 (HDFC: Housing Development Finance Corporation) HDFC is an abbreviation of Housing Development Finance Corporation. It is a well-known housing expansion finance corporation of India which largely makes available housing loa…

将10000H-1000FH这段空间当做栈,初始状态栈是空的,设置AX=001AH,BX=001BH,利用栈,交换AX和BX的数据

程序: mov ax,1000H mov ss,ax mov sp,0010H;设置AX和BX的值 mov ax,001AH mov bx,001BH;压栈 push ax push bx;出栈 pop ax pop bx解释: 在8086中,段寄存器不能直接传值,要通过一般寄存器,所以先将值传到ax中&#x…

利用WM_CTLCOLOR消息实现编辑控制(Edit Control)的文本与背景色的改变

(Abbey发表于2004-2-1 1:48:45)首先要明白:WM_CTLCOLOR是一个由控制(Control)发送给它父窗口的通知消息(Notification message)。实现步骤:生成一个标准的单文档应用程序框架,假设应用程序的名称为Color。我将利用它的About对话框做示范。在A…

fckeditor文件管理器添加查看、修改、删除文件功能[php]修正下载地址

2009年8月25日 由于PHP存在中文目录读取问题,将延期发布。2009年9月3日 正式发布:查看、修改、删除文件功能的fckeditor 2.6.4.1相关图片请查看:http://home.blueidea.com/attachment/200909/1/336696_1251813604S01b.gif相关其它&#xff1a…

php having,having方法

having方法1、对分组统计的结果,进行筛选如果将分分组查询的结果看成一张表的话,having方法类似where语句的功能2、源码:/thinkphp/library/think/db/Query.php/*** 指定having查询* access public* param string $having having* return $th…

合并排序算法排序过程_合并排序| 用于大型输入的最佳排序算法之一

合并排序算法排序过程What is sorting? 什么是分类? Sorting allows us to process our data in a more organized and efficient way. It makes searching easy as it will now take less time to search for a specific value in a given sorted sequence with …

Linux:jumpserver介绍(1)

官方网站 JumpServer - 开源堡垒机 - 官网https://www.jumpserver.org/ JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpServer 帮助企业以更安全的方式管控和登录所有类型的资产,实现事前授权、事中监察、事后审计&…