关于json数据传输解析的问题

wangzhuoyan 2009-06-02 10:53:41
我自己做了个小例子, 关于json往servlet中传值,然后在后台代码中解析提取键值,出错了,提示
net.sf.json.JSONException: JSONObject["name"] not found.
net.sf.json.JSONObject.get(JSONObject.java:1449)
net.sf.json.JSONObject.getString(JSONObject.java:1570)
com.my.servlet.Action.doGet(Action.java:30)
com.my.servlet.Action.doPost(Action.java:39)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
这个键值我是存在的,包都加了。不知道错在哪了
页面代码:
function servletJson()
{

var str = '{ "name": "Violet", "occupation": "character" }';
alert(str);

var form = document.getElementById("formName");
form.action="SpringCodeTest1?jsondate="+str ;
form.submit();


}
</script>
<form id="formName" method="post">

<input type="button" value="提交json数据到后台" onClick="servletJson()">

</form>

servlet中代码:

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

System.out.println("d0get");
String s3 = request.getParameter("jsondate");
System.out.println("::::::::"+s3);
//解析json数据,加载所有需要的包
JSONObject jsonObj = new JSONObject();
//获取key,得到value的值
System.out.println(jsonObj.getString("model"));
System.out.println(jsonObj.getInt("year"));


}
我认为这句有问题JSONObject jsonObj = new JSONObject();
应该吧JSONObject jsonObj = new JSONObject(s3 );
但是编译不过去,提示错误
...全文
831 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangzhuoyan 2009-06-03
  • 打赏
  • 举报
回复
问题解决,就是包的问题。谢谢
wangzhuoyan 2009-06-03
  • 打赏
  • 举报
回复
还是不行
页面:var str = '{ name: "Violet", occupation: "character" }';
后台:
String s3 = request.getParameter("jsondate");
JSONObject jsonObj = new JSONObject();
jsonObj.fromString(s3);//这行显示横线,貌似不支持
执行后报错:
java.lang.NoClassDefFoundError
at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:691)
at net.sf.json.JSONObject._fromString(JSONObject.java:919)
at net.sf.json.JSONObject.fromString(JSONObject.java:270)
包都加了啊
wangzhuoyan 2009-06-03
  • 打赏
  • 举报
回复
好的,我把包都加上试试
wangzhuoyan 2009-06-02
  • 打赏
  • 举报
回复
2楼的办法,出了新的错误:
javax.servlet.ServletException: Servlet execution threw an exception


root cause

java.lang.NoClassDefFoundError: org/apache/commons/collections/map/MultiKeyMap
net.sf.json.JsonConfig.<init>(JsonConfig.java:61)
net.sf.json.JsonConfig.<clinit>(JsonConfig.java:46)
net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:691)
net.sf.json.JSONObject._fromString(JSONObject.java:919)
net.sf.json.JSONObject.fromString(JSONObject.java:270)
com.my.servlet.Action.doGet(Action.java:29)
com.my.servlet.Action.doPost(Action.java:41)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

wangzhuoyan 2009-06-02
  • 打赏
  • 举报
回复
好的,我试试
dawnstar2008 2009-06-02
  • 打赏
  • 举报
回复
学习!
ChDw 2009-06-02
  • 打赏
  • 举报
回复
改用JSONObject.fromString(s3)吧
MT502 2009-06-02
  • 打赏
  • 举报
回复
应该是这样吧
var str = '{ \"name\": \"Violet\", \"occupation\": \"character\" }';
少龙123 2009-06-02
  • 打赏
  • 举报
回复
{ name: "Violet", occupation: "character" } 这样是绝对正确的

然后记得把需要加的jar包加上
ChDw 2009-06-02
  • 打赏
  • 举报
回复
这个是没有找到类吧,把common-collections.jar放入classpath中
wangzhuoyan 2009-06-02
  • 打赏
  • 举报
回复
还是报错:
:::::::{ name: "Violet", occupation: "character" }
2009-6-2 17:50:25 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet SpringCodeTest2 threw exception
java.lang.NoClassDefFoundError: org/apache/commons/collections/map/MultiKeyMap
at net.sf.json.JsonConfig.<init>(JsonConfig.java:61)
at net.sf.json.JsonConfig.<clinit>(JsonConfig.java:46)
at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:691)
robyjeffding 2009-06-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qiheia 的回复:]
var str = '{ name: "Violet", occupation: "character" }';
这样呢??
[/Quote]
顶7楼,这样应该可以了!
qiheia 2009-06-02
  • 打赏
  • 举报
回复
var str = '{ name: "Violet", occupation: "character" }';
这样呢??
wangzhuoyan 2009-06-02
  • 打赏
  • 举报
回复
????????????????

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧