`
ismyhotG
  • 浏览: 15842 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多

一、json

首先以我所学简单介绍一下json的基本内容

 

从定义上来说,json是一门轻量级的数据交换格式,便于阅读与编写,同时也易于机器解析和生成。

 

JSON的结构我只介绍一种,如下:

“名称/值”这种“键值对”的形态。

举例:object,object以{}为开始和结束,{string:key,string:key……},每一个名称后跟':',每一个“键值对”以‘,’分隔。

         如:{name:"tom",age:"24",...}

 

         array,以[]为开始和结束,如存放的是object,每一个object用","分隔。

         如:[{name:"tom",age:"24",...},{...},{...},...]

 

array中可以存放的数据类型:string、number、boolean、null等基本数据结构外,还可以存放 object、array。

 

         string,以""为开始和结束,与java的字符串非常相似,如果字符串中有某些符号,需要用"\"来进行转译。

 

以js代码的形式创建json对象,一定要注意和js中的对象字面量书写的区别,就是,json对象中name部分需要用""括起来,如下:

var jsonDemo = {
   "name":"zhang",
   "age":"24",
   "array":["book":"english","tel": "111", "cellphone": "222"]
};

 

二、eval

作为javascript的全局方法,它将执行一个javaScript代码的字符串。如果code含有一个表达式,eval()将计算这个表达式,并返回它的值。如果code含有一个或多个javascript语句,eval()将执行这些语句,如果最后一个语句有返回值,它还会返回这个值。如果code没有任何返回值,eval()将返回undefined。eval()常见的方法是编写作为递归的javascript解释器的程序,或者编写动态生成并计算javascript代码程序。最后,要注意的是,当打算传递给eval()原始字符串值时,不要粗心地给它传递String对象。

 

eval和JSON
由于Ajax的兴起,JSON这种轻量级的数据格式作为客户端与服务器之间的传输格式逐渐地流行起来,进而出现的问题是如何将服务器端构建好的JSON数据转化为可用的JavaScript对象。利用eval函数无疑是一种简单而直接的方法。在转化的时候需要将JSON字符串的外面包装一层圆括号:
var jsonObject = eval("(" + jsonFormat + ")");
为什么要加括号?
加上圆括号的目的是迫使eval函数在评估JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。
JSON格式的名字部分为什么要加引号?
因为eval函数会将{foo:"bar"}解释成合法的JavaScript语句,而非表达式。但是人们往往想要的是让eval将这段代码解释成一个对象。所以JSON格式会强制你去在名字的外侧加上引号再结合圆括号,这样eval就不会错误的将JSON解释成代码块。
举例说明
eval错误解析语义
alert(eval('{foo:"bar"}'));      // return "bar", incorrect
eval正确解析JSON
alert(eval('({"foo": "bar"})')); // return JSON object, correct

分享到:
评论

相关推荐

    巧用eval解析json对象

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

    javascript eval和JSON

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

    javascript中eval解析JSON字符串.docx

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

    js下用eval生成JSON对象.docx

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

    javascript中eval解析JSON字符串

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

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

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

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

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

    JS中Eval解析JSON字符串的一个小问题

    在处理JSON字符串时,通常有两种方法将其转换为JavaScript对象:`JSON.parse()`和`eval()`函数。`JSON.parse()`是现代浏览器内置的方法,专门用于解析JSON字符串,它是安全且推荐的解析方式。然而,在一些老版本或者...

    js下用eval生成JSON对象

    ### 使用eval生成JSON对象 #### 一、引言 在JavaScript开发中,有时需要将JSON字符串转换为可操作的对象。常见的做法之一就是使用`eval()`函数。然而,这种方法虽然便捷,但也存在一定的风险与限制。本文将详细...

    JS使用eval解析JSON的注意事项分析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,其结构与JavaScript对象相似,使得数据可以在JavaScript和其他语言之间轻松传递。当从服务器接收JSON格式的响应时,我们需要将其转换为JavaScript...

    JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析

    主要介绍了JSON在Javascript中的使用以及eval和JSON.parse的区别详细解析,本文对eval()和JSON.parse()的区别介绍的非常详细,需要的朋友可以参考下

    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 ...

    eval-json-path:EvaluateQuery给定路径下json对象的值

    eval-json-path 评估/查询给定路径下json对象的值 通常,可以通过属性名称或索引来访问js对象变量。 该模块允许按字符串给出的路径/步骤进行访问 用法 const evalJsonPath = require ( 'eval-json-path' ) const ...

    jquery eval解析JSON中的注意点介绍

    使用eval函数来解析,并且使用jquery的each方法来遍历 用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用...

    javascript eval和JSON之间的联系

    如果您想详细了解eval和JSON请参考以下链接: eval :https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Functions/Eval JSON:http://www.json.org/ eval函数的工作原理 eval函数会评估一个...

    为什么JS中eval处理JSON数据要加括号

    JSON是一种轻量级的数据交换格式,它的结构与JavaScript的对象字面量非常相似,但JSON字符串本身不能直接被JavaScript的`eval()`当作代码执行。这是因为`eval()`会尝试将传入的字符串解释为JavaScript代码的语句,而...

Global site tag (gtag.js) - Google Analytics