日期:2014-05-20  浏览次数:20749 次

java中如果解析rquest中json数据
JScript code

//验证成绩
$.ajax({
type: "GET",                                    url: "student/exchange/foreignProjApply....",
data: getScoreJSON(),
dataType: "json",
success: function(msg){
alert( "Data Saved: " + msg );
 // document.registeForm.submit();
 }
}); 




JScript code


function getScoreJSON(){
var json ={
    "cet4":$("#cet4").val(),
    "cet6":$("#cet6").val(),
    "Ielts":
        {  "IeltsTotalScore": $("#IeltsTotalScore").val(),
            "IeltsListening": $("#IeltsListening").val(), 
             "IeltsSpeaking":$("#IeltsSpeaking").val(),
           "IeltsReading": $("#IeltsWriting").val(),
                                                  "IeltsWriting":$("#IeltsWriting").val()
                                                          } 
    return eval(json);
    }




前面是js的json格式验证
在Struts 验证action中有如下代码:
String cet4= request.getParameter("cet4");
String cet6= request.getParameter("cet6");
String IeltsTotalScore= request.getParameter("Ielts.IeltsTotalScore");
这句红色错误!

我想问一下IeltsTotalScore节点的值如何获取?

------解决方案--------------------
當然可以自己手動去拆的,不過有第三方的json包,new JSONObject(String arg);
然后就可以操作了!
------解决方案--------------------
把JSON对象数据提交到后台时只是一个字符串参数,在后台需要获取该参数后用JSON包解析成JSON对象,然后你就可以访问里面的数据。JSON包可从www.json.org下载java包。使用方式如下,主要得看你JSON对象传到后台的参数名称是什么。

String jsonString= request.getParameter("json");
System.out.println(jsonString);
JSONObject jsonObj=new JSONObject(jsonString);
System.out.println(jsonObj.getJSONObject("Ielts").getString("IeltsTotalScore"));
------解决方案--------------------
我不知道你用的是什么框架,它提交到后台时是怎么处理的。
我用Extjs,如果是一个Object,那还得将它转换为字符串:
JScript code

var json ={
    "cet4":$("#cet4").val(),
    "cet6":$("#cet6").val(),
    "Ielts":
        Ext.encode(
        {  "IeltsTotalScore": $("#IeltsTotalScore").val(),
            "IeltsListening": $("#IeltsListening").val(), 
             "IeltsSpeaking":$("#IeltsSpeaking").val(),
           "IeltsReading": $("#IeltsWriting").val(),
           "IeltsWriting":$("#IeltsWriting").val()
       }
       )
    }