<%@ 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}");
}
}
程序源码见附件中
分享到:
相关推荐
在描述中提到,使用`eval()`生成JSON对象时,需要注意添加一对圆括号。这是因为JSON数据通常是以对象或数组的形式表示的,而JavaScript中的`eval()`在处理非完整语句时可能会出现问题。例如,如果JSON字符串是`{...
### JavaScript中eval解析JSON字符串详解 #### 一、前言 在JavaScript开发中,解析JSON字符串是一项常见的任务。其中一种方法是使用`eval()`函数。虽然这种方法并不推荐,但了解其工作原理及其潜在风险仍然非常...
1. **通过`eval()`函数解析JSON字符串**: 当服务器返回JSON字符串,而jQuery异步请求没有指定数据类型或以字符串形式接收时,我们可以使用`eval()`函数将其转换为JavaScript对象。但请注意,`eval()`是危险的,...
由于JSON规范要求数据用双引号包围,而JavaScript中对象的键默认需要用单引号或双引号,因此在使用`eval()`时,通常会在字符串前面和后面加上额外的括号,以确保解析为JavaScript对象而不是语句。 然而,这种方法...
### JavaScript巧用eval函数组装表单输入项为JSON对象的方法 在Web开发中,尤其是在使用Ajax进行前后端交互时,经常需要将表单中的输入项收集起来并转换为JSON对象,以便于通过HTTP请求(如POST)发送至服务器端...
需要注意的是,虽然`eval()`函数可以用来解析JSON字符串,但它并不被推荐作为解析JSON的标准方法,原因在于它会执行任何传入的字符串中的JavaScript代码,这可能会带来安全风险。例如,如果`data1`来源于不可信的...
使用eval函数来解析,并且使用jquery的each方法来遍历 用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用...
例如,如果一个JSON对象没有被包含在圆括号内直接传递给eval,可能会出现语法错误。这是因为eval期望的是一个JavaScript语句或表达式,而一个JSON对象字面量本身并不是一个有效的JavaScript语句。 在文章中提到的...
虽然eval的使用带来了灵活性,但也伴随着风险和注意事项,特别是在解析JSON格式的数据时。 首先,需要理解JSON是一种轻量级的数据交换格式,它的语法简单明了,易于人阅读和编写,同时也易于机器解析和生成。JSON与...
在早期的JavaScript开发中,有时会使用`eval()`函数来解析JSON,但这种方法存在安全风险,因为它会执行任何有效的JavaScript代码。因此,现在不推荐使用`eval()`,而是应该使用`JSON.parse()`。 #### JSON.parse() ...
jQuery提供了更安全的方式来解析JSON数据,即使用`.getJSON()`方法。`.getJSON()`是异步的,它会发送一个HTTP GET请求到指定的URL,然后将返回的JSON数据解析成JavaScript对象。例如: ```javascript $.getJSON(...
在JavaScript中,解析JSON数据通常涉及两种主要方法:使用`eval()`函数和使用`JSON.parse()`(在现代浏览器中)。本文主要关注使用`eval()`解析JSON的注意事项,尤其是在结合jQuery进行异步请求的情况下。 首先,让...
### 使用eval生成JSON对象 #### 一、引言 在JavaScript开发中,有时需要将JSON字符串转换为可操作的对象。常见的做法之一就是使用`eval()`函数。然而,这种方法虽然便捷,但也存在一定的风险与限制。本文将详细...
一个在js中解析json字符串为json对象的库, 在js中 使用 var json = json_parse('json...json就是解析后的json对象,比较方便的避免eval函数。如果不想引入其他过多的js库,那么使用这个库解析json字符串还是蛮方便的
JSON对象是一个无序的键值对集合,由大括号`{}`包围,每个键值对由键(key)和值(value)组成,键用双引号`""`包裹,值可以是字符串、数字、布尔值、数组、null或其他JSON对象。 在处理JSON字符串时,通常有两种...
另一种方法是在VBScript中嵌入JScript代码,通过JScript的`eval`函数解析JSON字符串。由于VBScript不支持`eval`,我们需要在JScript中定义一个`parseJSON`函数,然后在VBScript中调用它。 1. **定义JScript函数**:...
如果没有圆括号,`eval`可能会误将JSON数据解析为语句而不是对象。例如,`{}`会被误认为是一条空语句而不是一个空对象。 ```javascript alert(eval("{}")); // undefined alert(eval("({})")); // [object Object] ...