`
flare
  • 浏览: 124664 次
  • 性别: Icon_minigender_1
  • 来自: 天尽头
社区版块
存档分类
最新评论

json与eval

阅读更多

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)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

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

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

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

 

因为JSON 是 javascript 的一个子集,所以,在javascript 中使用JSON是非常简单的        

js 代码
  1. var myJSONObject = {"bindings": [  
  2.          {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},  
  3.          {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},  
  4.          {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}  
  5.      ]  
  6. };  

在上面的例子中,我们创建了只包含一个成员 "bindings" 的一个对象,bindings 则包含了一个由3个对象组成的数组。这3个对象都包含3个成员:"ircEvent", "method""regex"。

在javascript 中, 成员可以通过“点号”来获取。
比如:
js 代码
  1. myJSONObject.bindings[0].method  

通过eval() 函数可以将JSON字符串转化为对象。
js 代码
  1. var myObject = eval('(' + myJSONtext + ')');  

eval 函数非常快,但是它可以编译任何 javascirpt 代码,这样的话就可能产生安全的问题。eval 的使用是基于传入的代码参数是可靠的假设的,有一些情况下,可能客户端是不可信任的。

如果基于安全的考虑的话,最好是使用一个
JSON 解析器。 一个 JSON 解析器将只接受 JSON 文本。所以是更安全的。
js 代码
  1. var myObject = JSON.parse(myJSONtext, filter);  


可选的 filter 参数将遍历每一个value key 值对, 并进行相关的处理。如:

js 代码
  1. myData = JSON.parse(text, function (key, value) {       
    1. return key.indexOf('date') >= 0 ? new Date(value) : value;     });

stringifier 函数的作用跟 parse 相反, 用来将一个js对象转换为 JSON 文本。
js 代码
  1. var myJSONText = JSON.stringifier(myObject);  

这里是一个开源的
JSON parser and JSON stringifier

 

eval的功能简介:

eval可以将字符串生成语句执行,和SQL的exec()类似。
eval的使用场合是什么呢?有时候我们预先不知道要执行什么语句,只有当条件和参数给时才知道执行什么语句,这时候eval就派上用场了。举个例子:
我们要做一个function(),功能是输入网页中两个个对象的名称,然后程序就将这两个对象的值联接起来输出。
function output(a,b)
{
var tmpa,tmpb;
tmpa=document.all.a.value;
tmpb=document.all.b.value;
document.write(tmpa+tmpb);
}
output('input1','input2');
这 样你执行的时候就会提示错误“document.all.a不是对象”以及“document.all.b不是对象”。原来 javascript把a和b当成对象名称了,怎样能让javascript把a里面的值作为对象名称呢?这时候就要用eval了,把代码改成这样:
function output(a,b)
{
var tmpa,tmpb;
tmpa=eval("document.all."+a+".value");
tmpb=eval("document.all."+b+".value");
document.write(tmpa+tmpb);
}
output('input1','input2');
这样javascript就会先取出a,b的值,然后和前面的document.all.以及后面的.value组合运行,于是就可以
顺利取出input1和input2的值,我们的目的达到了。

 

分享到:
评论
3 楼 wxpwdm8461 2009-01-17  
呵呵,顶,图片很有意思
2 楼 flare 2008-02-18  
不用客气,也不是我画的.是json的官方网站提供的.http://www.json.org/
1 楼 hejian1860 2008-02-18  
嗨,兄弟,你文中的图片很有意思,我收藏了,谢谢!

相关推荐

    巧用eval解析json对象

    在IT行业中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务与客户端之间的数据传输。它以其简洁、易于读写的特点深受开发者喜爱。本篇将聚焦于如何巧妙地使用`eval`函数来解析...

    javascript eval和JSON

    ### JavaScript中的`eval`函数与JSON的理解与应用 #### `eval`函数的工作原理及应用场景 在JavaScript编程语言中,`eval`是一个全局函数,它的主要功能是接收一个字符串参数,该字符串应该包含有效的JavaScript...

    JavaScript的eval JSON object问题

    4. JSON与eval函数的结合:在AJAX开发中,一种常见的做法是在客户端回调函数中使用eval函数将服务器返回的JSON格式字符串转换成JavaScript对象,以便于后续的数据操作和使用。代码示例如下:`var jsonData = eval...

    js使用eval解析json(js中使用json)

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它的结构与JavaScript对象相似,但通常以文本字符串的形式传输。在JavaScript中,有更安全的方法来解析JSON字符串,比如使用`JSON.parse()`函数。 ...

    javascript中eval解析JSON字符串

    我们都知道,高级浏览器可以用 JSON.parse() API 将一个 JSON 字符串解析成 JSON 数据,稍微欠妥点的做法,我们可以用 eval() 函数。 var str = '{"name": "hanzichi", "age": 10}'; var obj = eval('...

    JSON入门与实战

    JSON(JavaScript Object Notation http://www. json .org/ json ...更轻巧,它是 XML 数据交换的一个替代...的在 JSON 串与 JavaScript 对象之间进行转换。如果夸大来说,它是另一种理想 的但 有别于 XML 数据交换语言。

    JavaScript中的JSON 中文版翻译

    3. JSON与eval()函数的使用:虽然eval()函数能够将JSON字符串转换为JavaScript对象,但这种方法存在严重的安全隐患,因为eval()会执行字符串中的任何JavaScript代码。这可能导致恶意代码的执行,特别是当字符串内容...

    js下用eval生成JSON对象.docx

    然而,当涉及到从服务器端获取JSON数据并将其转换为JavaScript对象时,`eval()`通常被用来解析这些数据。但是,这种方法存在一定的安全风险,因此在实际开发中,推荐使用更安全的JSON.parse()方法。 在描述中提到,...

    javascript中eval解析JSON字符串.docx

    ### JavaScript中eval解析JSON字符串详解 #### 一、前言 在JavaScript开发中,解析JSON字符串是一项常见的任务。其中一种方法是使用`eval()`函数。虽然这种方法并不推荐,但了解其工作原理及其潜在风险仍然非常...

    JSON2.JS JSON.JS JSON_PARSE.JS

    json2.js: This file creates a JSON property in the global object, if there isn't already one, setting its value to an object containing a stringify method and a parse method. The parse method uses ...

    js使用eval解析json实例与注意事项分享

    JSON与JavaScript对象之间的关系非常紧密,因为JSON的结构与JavaScript的Object字面量几乎是一致的,这就意味着在JavaScript中处理JSON数据时,不需要任何特殊的API或工具包。 当JSON数据以字符串的形式存在时,...

    eval 加密和解密

    "eval"在编程语言中通常与代码执行有关,尤其是JavaScript和PHP等动态语言。在这里,我们将深入探讨eval函数在加密和解密中的应用,以及相关工具的使用。 首先,`eval`是一个在许多动态语言中都存在的函数,如...

    jQuery方法扩展:type, toJSON, evalJSON

    本文将深入探讨jQuery中的三个特定方法:type、toJSON和evalJSON,这些方法对于处理数据类型检查和JSON数据序列化与反序列化至关重要。 首先,我们来看`type`方法。在JavaScript中,数据类型检测有时会因为动态类型...

    json------javascript eval()以及Example

    本文将深入探讨JSON与JavaScript中的`eval()`函数的关系,并通过一个具体的示例来展示它们如何协同工作。 在JavaScript中,`eval()`函数是一个危险但强大的工具,它可以执行一个字符串作为JavaScript代码。在处理...

    JSON2解决JSON未定义

    在JSON2.js中,它通过使用eval()函数和try/catch语句来实现,尽管这种方法存在一定的安全风险,但在旧版IE中这是唯一的可行方案。 - `JSON.stringify()` 方法则是将JavaScript值转换为JSON字符串。它接受三个参数:...

    json2 json

    使用thisfile recommended.json_parse.js:该文件包含替代JSON的parse函数thatuses递归下降而不是eval.json_parse_state.js:此文件包含替代JSON的parse函数thatuses状态机器代替eval.cycle.js:这个文件包含了两个...

    json上解析对JSON对象前台获取

    JSON对象是前端与后端交互的常用方式,jQuery提供了一系列便利的方法来处理JSON数据。通过理解JSON格式和使用`$.ajax()`、`$.getJSON()`或`JSON.parse()`,开发者可以在前端轻松地解析并使用从服务器获取的JSON数据...

    纯javascript实现json与对象的互相转换项目

    - `JSON.parse()`不会执行JavaScript代码,所以它比直接使用`eval()`更安全。 这个项目对于学习JavaScript深入理解数据结构、字符串操作以及递归处理有很好的实践价值。同时,它也能够帮助开发者更好地理解和掌握...

    JSON的学习总结(总结+源码)

    **JSON.parse与eval** 在JavaScript中,解析JSON字符串有多种方式。`JSON.parse()` 是安全的解析方法,它可以将JSON字符串转换为JavaScript对象: ```javascript let jsonString = '{"name":"John", "age":30}'; ...

Global site tag (gtag.js) - Google Analytics