`
toyota2006
  • 浏览: 550772 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

巧用eval解析json对象

阅读更多
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page pageEncoding="UTF-8"%>
<html> 
   <head> 
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     <title> json.html </title> 
   </head> 
   <body> 
   
<script src="json.js"></script>
<script>


function getCustomerInfo(){
   
   if (window.ActiveXObject && !window.XMLHttpRequest) {
       window.XMLHttpRequest=function() {
       return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');
    };
   }//取得XMLHttpRequest对象


	   var url = "/jsonDemo/json?jsonStr=" + (new  DBdata()).toJSONString() ;
	   alert(url);
       var req=new XMLHttpRequest();
       if (req) {
           req.onreadystatechange=function() {
            if (req.readyState==4 && req.status==200) {//判断状态,4是已发送,200已完成 
                  //获得json str
                  var  jss  =  req.responseText;
			  alert("request.responseText : " + req.responseText);
                  //加载到 javascript 类中 string -> jsBean
                  var  jsobj  =  eval('(' + jss + ')');
                  document.getElementById('text').value  =  jsobj.name  ;
				  document.getElementById('text2').value  =    jsobj.avg ;
                  }
          }
                         req.open('GET', url, true);
                         req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');				
                         req.send(null);//发送参数如果有参数req.send("username="+user_name);用request取得
       }
}

 
      function  DBdata(){
          this .name  =  'BurceLee';
          this .avg = 23 ; 
          this .init = function (){
             alert('OK');
         }
     }	
</script>
       <INPUT  id ="text"   type ="text"  > 
	   <INPUT  id ="text2"   type ="text"  > 
       <INPUT  id ='a'  type ="button"  onclick ="getCustomerInfo()"  value ="click"> 

   </body> 
</html> 



import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.*;

import org.apache.commons.jxpath.JXPathContext;


public class Json extends HttpServlet {
    public void doGet(HttpServletRequest req,HttpServletResponse rpo)throws ServletException,IOException{
        rpo.setCharacterEncoding("GBK");
        req.setCharacterEncoding("GBK");
        rpo.setContentType("text/html; charset=GBK");
        
        PrintWriter out = rpo.getWriter() ;
        
//      得到 url 传入数据 
        String jsonStr = req.getParameter("jsonStr") ;
        System.out.println("************************jsonStr :" + jsonStr);
 
       /*
        * {"name":"BurceLee",
        *   "avg" : 29
        * }
        *   
        *  
        * 
        * 以下注释部分原本想通过url传入的数据转变成json对象
        * 并将其解析成一个map,对其中key=“ave”的值加一
        * 后返回给前台jsp。不知为什么系统总是报
        * java.lang.NoClassDefFoundError	
        * at net.sf.json.JSONObject.fromObject(JSONObject.java:154)
        * 的异常
        * 暂且将这段代码注释掉,还希望高手们帮助解决一下。
        */
        
       /*JSONObject jso = JSONObject.fromObject(jsonStr);
        JXPathContext jx = JXPathContext.newContext(jso);
        try {
           jx.setValue("./avg", jx.getValue("./avg + 1 ") );
        } catch (Exception e) {e.printStackTrace();}
         //以 jsonString 传出
        out.print(jso.toString());     
       */
        out.print("{\"name\":\"BurceLee11\",\"avg\":29}");

    }
}


程序源码见附件中
分享到:
评论
1 楼 jersey109 2011-10-19  
如果返回的JSON数据是数组字符串如何解析啊.

相关推荐

    js下用eval生成JSON对象.docx

    在描述中提到,使用`eval()`生成JSON对象时,需要注意添加一对圆括号。这是因为JSON数据通常是以对象或数组的形式表示的,而JavaScript中的`eval()`在处理非完整语句时可能会出现问题。例如,如果JSON字符串是`{...

    javascript中eval解析JSON字符串.docx

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

    用jquery解析JSON数据的方法20110227

    1. **通过`eval()`函数解析JSON字符串**: 当服务器返回JSON字符串,而jQuery异步请求没有指定数据类型或以字符串形式接收时,我们可以使用`eval()`函数将其转换为JavaScript对象。但请注意,`eval()`是危险的,...

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

    由于JSON规范要求数据用双引号包围,而JavaScript中对象的键默认需要用单引号或双引号,因此在使用`eval()`时,通常会在字符串前面和后面加上额外的括号,以确保解析为JavaScript对象而不是语句。 然而,这种方法...

    javascript巧用eval函数组装表单输入项为json对象的方法.docx

    ### JavaScript巧用eval函数组装表单输入项为JSON对象的方法 在Web开发中,尤其是在使用Ajax进行前后端交互时,经常需要将表单中的输入项收集起来并转换为JSON对象,以便于通过HTTP请求(如POST)发送至服务器端...

    js解析json代码

    需要注意的是,虽然`eval()`函数可以用来解析JSON字符串,但它并不被推荐作为解析JSON的标准方法,原因在于它会执行任何传入的字符串中的JavaScript代码,这可能会带来安全风险。例如,如果`data1`来源于不可信的...

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

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

    javascript中eval解析JSON字符串

    例如,如果一个JSON对象没有被包含在圆括号内直接传递给eval,可能会出现语法错误。这是因为eval期望的是一个JavaScript语句或表达式,而一个JSON对象字面量本身并不是一个有效的JavaScript语句。 在文章中提到的...

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

    虽然eval的使用带来了灵活性,但也伴随着风险和注意事项,特别是在解析JSON格式的数据时。 首先,需要理解JSON是一种轻量级的数据交换格式,它的语法简单明了,易于人阅读和编写,同时也易于机器解析和生成。JSON与...

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

    在早期的JavaScript开发中,有时会使用`eval()`函数来解析JSON,但这种方法存在安全风险,因为它会执行任何有效的JavaScript代码。因此,现在不推荐使用`eval()`,而是应该使用`JSON.parse()`。 #### JSON.parse() ...

    jquery解析JSON数据的方法.docx

    jQuery提供了更安全的方式来解析JSON数据,即使用`.getJSON()`方法。`.getJSON()`是异步的,它会发送一个HTTP GET请求到指定的URL,然后将返回的JSON数据解析成JavaScript对象。例如: ```javascript $.getJSON(...

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

    在JavaScript中,解析JSON数据通常涉及两种主要方法:使用`eval()`函数和使用`JSON.parse()`(在现代浏览器中)。本文主要关注使用`eval()`解析JSON的注意事项,尤其是在结合jQuery进行异步请求的情况下。 首先,让...

    js下用eval生成JSON对象

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

    js解析json字符串的库

    一个在js中解析json字符串为json对象的库, 在js中 使用 var json = json_parse('json...json就是解析后的json对象,比较方便的避免eval函数。如果不想引入其他过多的js库,那么使用这个库解析json字符串还是蛮方便的

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

    JSON对象是一个无序的键值对集合,由大括号`{}`包围,每个键值对由键(key)和值(value)组成,键用双引号`""`包裹,值可以是字符串、数字、布尔值、数组、null或其他JSON对象。 在处理JSON字符串时,通常有两种...

    VBScript把json字符串解析成json对象的2个方法

    另一种方法是在VBScript中嵌入JScript代码,通过JScript的`eval`函数解析JSON字符串。由于VBScript不支持`eval`,我们需要在JScript中定义一个`parseJSON`函数,然后在VBScript中调用它。 1. **定义JScript函数**:...

    javascript eval和JSON

    如果没有圆括号,`eval`可能会误将JSON数据解析为语句而不是对象。例如,`{}`会被误认为是一条空语句而不是一个空对象。 ```javascript alert(eval("{}")); // undefined alert(eval("({})")); // [object Object] ...

Global site tag (gtag.js) - Google Analytics