`
夏末忆逝
  • 浏览: 147189 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用jQuery解析json的注意事项

 
阅读更多

问题背景:

所做的页面是与ps系统(oracle的people soft)交互,以json格式传递数据,页面中请求ps中的iscript(权当请求地址即可),返回json格式的字符串(注意返回的是字符串,并不是json数据,还不存在对象关系)

 

开始的做法是引用了prototype.js来把字符串解析为json对象,但由于项目中也引用了jQuery.js 这就造成了 $ 符号冲突,虽然可以使用jQuery.noConflict(); 来解决此问题,但毕竟代码要做修改,要把所有使用$符号的jQuery代码替换掉,很费时间

 

普及一个概念,这也是出现此问题的原因,原以为服务器传递回的json格式的数据,就已经是json对象,想使用点操作符来获取字符串中的对象,得不到才使用的prototype.js来解决,服务器其实只是给你返回了json格式的字符串,但并不是json对象,所以不能直接使用该数据,需要转成json对象才能使用里面的属性

 

注意上面的描述 一直在强调返回的是 json格式的字符串 一定要分清楚json对象和字符串的区别

 

解决方案:

①:可以继续使用prototype.js 来解析json格式的字符串,但jQuery的操作符$,要换成其他字符(不推荐)

②:去掉prototype.js,使用js提供的eval()函数来解析json格式的字符串,即可得到json对象

 

例:   

            //参保人集合
            var jsonData = eval("("+data+")");//转换为json对象 
            var person = jsonData.BENEFIT_INFO;

            BENEFIT_INFO 是解析后的json对象中的属性

使用eval()函数时要注意的问题就是括号的问题,下面是摘录其他人的资料,不是完全懂,做为借鉴,有了解的朋友可以留言,为我解答一下

 

var dataObj=eval("("+data+")");//转换为json对象

Red rose为什么要 eval这里要添加 “("("+data+")");//”呢?

原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语 句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始 和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]

对于这种写法,在JS中,可以到处看到。

如: (function()) {}();  做闭包操作时等。

 

补充:

如果使用的是java工程,可以使用第三方jar来把json格式的字符串转成json对象,再传递到前台,这时前台就可以直接使用json对象中的数据,不用先转json对象了

 

 

分享到:
评论

相关推荐

    使用JQuery实现从JSON对象转换为form提交数据

    4. **优化与注意事项** - JSON对象中的嵌套对象和数组需要特殊处理,不能直接转换为URL编码的字符串。对于嵌套的对象,可以递归地调用`jsonToFormParams()`;对于数组,可以考虑将其转换为逗号分隔的字符串或者多个...

    jquery+json 无刷新分页

    - Web服务返回JSON格式的分页数据,jQuery接收到数据后,使用`$.parseJSON()`或`JSON.parse()`方法解析JSON字符串为JavaScript对象。 - 使用这些数据更新页面上的表格或列表,实现无刷新的效果。 ### 4. 示例代码 ...

    jquery+json的无刷新分页

    服务器返回的是JSON格式的数据,前端使用jQuery解析并动态插入到DOM中,从而实现页面内容的更新。 四、jQuery实现无刷新分页步骤 1. **HTML结构**:首先,我们需要在页面上设置分页导航和内容区域。分页导航通常...

    jquery+json 实现页面无刷新列表分页

    4. **处理响应**:在jQuery的AJAX回调函数中,解析JSON响应,然后动态更新列表内容,同时更新分页导航的状态。 5. **事件绑定**:确保每次分页链接被点击时,都会执行上述过程,可以使用`.on()`方法绑定事件监听器...

    JQuery处理JSON课堂示例(Struts1.2).rar

    注意事项** - 确保服务器端返回的JSON数据格式正确,避免出现语法错误。 - 考虑到跨域问题,可能需要在服务器端开启CORS或者使用JSONP。 - 在处理JSON数据时,注意数据安全,避免XSS攻击。 以上就是使用jQuery...

    Jquery解析json字符串及json数组的方法

    ### 注意事项 在使用`$.parseJSON()`时,必须确保传入的字符串是有效的JSON格式。如果格式不正确,该方法会抛出一个异常。为了避免这种情况,可以使用try/catch块来处理潜在的错误。 总结来说,JQuery通过`$.parse...

    json格式数据查看和编辑jQuery插件

    - `readme.html` 通常包含插件的使用说明、安装步骤、注意事项等信息。 - `jQuery之家.url` 可能是收藏夹链接,指向有关jQuery的资源网站。 - `src` 文件夹包含插件的源代码,可能包括JavaScript和CSS等。 - `js...

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

    在这两种方法中,使用eval函数解析JSON需要特别注意一些事项,以避免潜在的安全风险和执行错误。 首先,使用eval()函数解析JSON字符串是一种方法,但是这种方法存在安全风险,因为它可以执行字符串中的任意代码,...

    Ajax无刷新分页(jQuery+Json)

    **五、优化与注意事项** 1. **分页加载优化**:为了提高用户体验,可以采用懒加载或无限滚动的方式,即当用户滚动到页面底部时加载下一页内容。 2. **错误处理**:确保有适当的错误处理机制,如网络中断或服务器...

    省市区三级联动(jQuery+Json)

    六、优化与注意事项 1. 为了提高性能,可以在用户首次加载页面时预加载所有数据,而不是每次改变选项时才请求。 2. 为了防止无限循环或无效数据,确保在事件处理函数中添加合适的判断条件。 3. 考虑到用户体验,可以...

    Jquery遍历Json数据的方法

    注意事项 在遍历JSON数据时,需要注意以下几点: - 确保在文档的`<head>`标签中引入了jQuery库。 - 遍历数组时,确保正确处理索引和值。 - 动态内容显示在`<body>`中,而不是`<head>`或`<script>`标签内。 - 遵循...

    json 解析所依赖的jar包

    9. **安全注意事项**:在使用JSON时,要注意防止JSON Hijacking和JSON Injection攻击,可以通过设置合适的HTTP头或使用JSONP(JSON with Padding)等方式增强安全性。 10. **测试与调试**:使用Postman等工具可以...

    Struts2+jQuery(不用JSON)实现局部刷新

    6. **注意事项**: - 安全性:使用AJAX和局部刷新时,应考虑XSS攻击,确保返回的数据已进行了适当的转义和过滤。 - 缓存:可能需要禁用AJAX请求的缓存,以防止显示过期数据。 - 错误处理:添加错误处理代码,处理...

    基于json数据的动态jquery轮播图插件

    3. **readme.html**:包含了关于插件的使用说明和注意事项,对于开发者来说是重要的参考资源。 4. **jQuery之家.url**:这可能是一个快捷方式或链接,指向jQuery的官方网站,提供额外的学习资源。 5. **css** 文件夹...

    Struts2处理json简介及注意事项

    注意事项: - 确保服务器端返回的JSON数据是合法的,遵循JSON语法规则。 - 避免在JSON中包含可能导致XSS攻击的用户输入数据,需进行适当的转义或过滤。 - 对于跨域请求,可能需要在服务器端设置CORS策略,允许特定...

    jQuery.parseJSON(json)将JSON字符串转换成js对象

    让我们详细探讨一下这个函数的使用方法和注意事项。 首先,需要明确jQuery.parseJSON函数的作用是把一个JSON格式的字符串解析成JavaScript对象。这个函数接受一个字符串类型的参数jsonString,它必须是一个有效的...

    jquery call wcfwebservice by json

    ### 注意事项 - 确保WCF服务的URL正确无误,且允许跨域访问(如果需要)。 - 对于GET请求,可以使用`$.getJSON`,但WCF默认不支持GET方式的安全性问题,所以通常使用POST。 - JSON.stringify()函数用于将JavaScript...

    jQuery + Ajax + json 级联

    #### 四、实践应用与注意事项 - **数据安全性**:在实际应用中,应考虑数据传输的安全性,使用HTTPS协议加密数据传输,防止数据被截获。 - **性能优化**:合理设置缓存策略,减少不必要的Ajax请求,提高应用响应...

    jQuery Ajax使用 全解析

    ### jQuery Ajax使用时的注意事项 - **跨域问题:** 如果请求的URL跨域,则需要服务器端支持CORS。 - **回调函数中的this指向:** 在回调函数中,this通常指向当前的DOM元素或Ajax请求的配置选项,具体取决于调用...

Global site tag (gtag.js) - Google Analytics