json基础学习

原创 2015年07月10日 12:16:57

JSON是什么?

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

JSON建构于两种结构:

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

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

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

有关JSON的更多介绍,访问它的官方网站:http://www.json.org

在JavaScript中使用JSON

JSON是JavaScript对象描述符号(object literal notation)的一个子集。正因为JSON是JavaScript的子集,所以在JavaScript中我们可以很容易的使用它。

var myJSONObject = {"bindings": [

{"ircEvent": "PRIVMSG", "method":"newURI", "regex": "^http://.*"},

{"ircEvent": "PRIVMSG", "method":"deleteURI", "regex": "^delete.*"},

{"ircEvent": "PRIVMSG", "method":"randomURI", "regex": "^random.*"}

]

};

这个例子中,创建了一个对象,它只包含一个成员“bindings”。“bindings”是一个包含了3个对象的数组,而这每个对象都有"ircEvent"、"method"和"regex"3个成员。

这些成员可以用“.”或subscript 操作得到。

myJSONObject.bindings[0].method   // "newURI"

我们可以使用eval()函数的eval()方法调用JavaScript的编译器把JSON文本转变成对象。因为JSON是JavaScript的一个确切的子集,编译器可以正确地解析JSON文本,然后生成一个对象结构。

var myObject = eval('(' + myJSONtext + ')');

eval函数的执行效率很高。然而,它能够编译、执行任何的JS程序,所以这样会有安全问题。在来源可信的时候才需要使用eval,这通常是服务器提供基础页面和JSON数据的web应用程序中的情形。而很多情况中,来源是不可信的。特别是永远都不要信任客户端。

如果关心安全的话,那最好是使用JSON解析器了(js脚本中有解析功能的函数)。JSON解析器只认可JSON文本,因此它比较安全:

var myObject = myJSONtext.parseJSON();

而JSON的字符串转换器(stringifier)则作相反的工作,它将JavaScript数据结构转换为JSON文本。JSON是不支持循环数据结构的,所以注意不能把循环的结构交给字符串转换器。

var myJSONText = myObject.toJSONString();

这里是JSON官方网站提供的一个开源的JSON解析器和字符串转换器:json.js

 一个使用json.js的简单例子

1. 在VS中新建一个空网站。

2. 引入json.js文件。

 <script type="text/javascript" src="json.js"></script>

3. 然后添加一个HTML页面,在页面上拖放两个Textarea和三个Button;Button的ID分别为btnParser、btnEval和btnStringifier;Textarea的ID分别为txtJSON和txtJS,cols设为50,rows设为10;

  

4. 编写三个Button的事件代码。

        <script type="text/javascript">
    //<![CDATA[
    
        function btnStringifier_Click() {
            var oTxtJSON = document.getElementById("txtJSON");           
            var myObject = new Object(); //创建对象
            var obindings = new Array();
            var oFirst = new Object();
            var oSecond = new Object();
            var oThird = new Object();
            
            oFirst.ircEvent = "PRIVMSG";
            oFirst.method = "newURI";
            oFirst.regex = "^http://.*";   
            //
            
            obindings[0] = oFirst;
            obindings[1] = oSecond;
            obindings[2] = oThird;
            
            //将obindings数组设置为myObject的bindings成员
            myObject.bindings = obindings;
            
            //将对象转化成JSON文本,并把文本写入Textarea中
            oTxtJSON.value = myObject.toJSONString(); 
        } 
    
        function btnParser_Click() {
            var oTxtJSON = document.getElementById("txtJSON");
            var oTxtJS = document.getElementById("txtJS");
            //把JSON文本转变成对象 
            var myObject = oTxtJSON.value.parseJSON();
            
            //获取myObject对象的第一个bindings成员得ircEvent成员(属性值)
            oTxtJS.value += myObject.bindings[0].ircEvent + "/";
        } 

        function btnEval_Click() { 
            var oTxtJSON = document.getElementById("txtJSON");
            var oTxtJS = document.getElementById("txtJS");
            //把JSON文本转变成对象 
            var myObject = eval('(' + oTxtJSON.value + ')');
            
            //获取myObject对象的第一个bindings成员得ircEvent成员(属性值)
            oTxtJS.value += myObject.bindings[0].method + "/";
        }

    //]]> 
    </script>

5. 运行HTML页面,先点Stringifier,得到对象的JSON文本;然后点Parser,将JSON文本转化成对象,然后获取ircEvent成员的值;最后点Eval,它也将JSON文本转化成对象,然后获取method成员的值;看看效果:


版权声明:本文为博主原创文章,未经博主允许不得转载。

Json学习一(基础概念知识学习)

1.Json简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。它是基于 J...
  • cuiyaoqiang
  • cuiyaoqiang
  • 2016年03月31日 11:00
  • 2050

Python基础教程(十三):JSON、练习题100题

Python JSON 本章节我们将为大家介绍如何使用 Python 语言来编码和解码JSON 对象。 环境配置 在使用 Python 编码或解码 JSON 数据前,我们需要先安装 ...
  • GarfieldEr007
  • GarfieldEr007
  • 2015年12月01日 18:02
  • 2227

[转]《零基础入门深度学习》系列文章(教程+代码)

无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就o...
  • TS1130
  • TS1130
  • 2016年11月20日 21:07
  • 33154

iOS开发学习专题-基础知识(三)NSDictionary字典NSMutableDictionary可变字典NSDictionary字典和json转换详细使用方式

本文主要讲解的是不可变字典NSDictionary可变字典NSMutableDictionary字典NSDictionary和Json转换详细使用方式包括类型和值之间的转换 首先来看看不可变的字典...
  • werctzzz
  • werctzzz
  • 2017年05月12日 11:27
  • 823

AJAX基础学习3之JSON

1、数据格式 在服务器端AJAX是一门与语言无关
  • zhu7478848
  • zhu7478848
  • 2014年07月28日 22:05
  • 203

程序开发基础学习五(json配置、解析文件,c++篇)

在游戏中加载解析配置文件家常便饭。以前用过xml,对多维数组结构良好的应用加上xml配置文件遵循html规则,xml还是特别方便的,可是当数据量比较大的话,一堆助记符不仅写起来比较烦,出现问题查起来很...
  • hackmind
  • hackmind
  • 2011年07月19日 17:28
  • 5400

JS基础学习第八天:JSON是什么?怎么使用?

什么是json? ===========    JSON是一种按照JavaScript对象语法的数据格式,虽然它是基于 JavaScript 语法,但它独立于JavaScript,这也是为什么许多...
  • weixin_37615202
  • weixin_37615202
  • 2017年12月06日 14:23
  • 23

OC基础学习——如何解析plist文件和数据的归档和解档与json数据的解析

一、plist文件的解析    NSString *path = @"/Users/qf/Desktop/oc课堂练习/Plist文件的新建与解析/Plist文件的新建与解析/Pro...
  • qq_28591685
  • qq_28591685
  • 2015年06月06日 13:53
  • 546

AJAX基础学习4之JSON

1、将Java的ArrayList对象打印成JSON
  • zhu7478848
  • zhu7478848
  • 2014年07月30日 10:42
  • 193

JAVA基础学习之Http(含JSON)网络编程

1.访问网络资源,下载网络资源 示例:import java.io.FileOutputStream; import java.io.IOException; import java.io.Inpu...
  • u012149399
  • u012149399
  • 2015年10月17日 19:25
  • 1523
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:json基础学习
举报原因:
原因补充:

(最多只允许输入30个字)