2017-03-08 131 views
1

我想从我的窗体中获取JSON对象。使用GSON库获取JSON密钥值

请找到JSON下面:

[{"id":["4"]},{"Flap":["NA"]}] 

所以我用一个隐藏属性保存在我的ModelForm值成一个JSONObject(从GSON库)。当我从我的控制器调用该对象时,我无法通过键获取值。

在JSP中:

<form:form modelAttribute="myForm" action="/action"> 
<input type="hidden" name="jsonObject" id="jsonObj" value=""/> 
<input type="submit" value="Submit" onclick="function getjson()"/> 
</form:form> 

在JS,我收集所有检查盒和节约提交值以JSON形式的信息。

在JS:

function getjson(){ 
    var json = []; 
    var checkedBoxes = $('input[name="checkedList"]:checked').map(function() { 
     return this.value; 
    }).get(); 
var checkedBoxes1 = $('input[name="checkedList1"]:checked').map(function() { 
     return this.value; 
    }).get(); 

    json.push({"id":checkedBoxes}); 
    json.push({"Flap":checkedBoxes1}); 
    document.getElementById("jsonObj").value = json; 
} 

在MyForm.Java:

private JsonObject jsonObjct; 
//getters and setters for jsonObjct 

我收集检查的值的信息以JSON形式并将其保存在 “jsonObjct” 在MyForm的和试图检索我的控制器中的值使用:

myForm.getJsonObjct(); 

任何人都可以请帮助我与此。提前致谢。

+0

分享你的代码? – Coder

+0

嗨@Coder我添加了代码。对不起,以前不清楚。 – user7637864

+0

JSON如何发送到Java对象'MyForm'?你发送的格式是什么? – Coder

回答

0

首先这个[{"id":["4"]},{"Flap":["NA"]}]是一个jsonArray。如果你可以使用org.json这个jar会更好,很简单。

import org.json.JSONArray; 

public class GsonExample { 

    public static void main(String[] args) { 
     String jsonString="[{\"id\":[\"4\"]},{\"Flap\":[\"NA\"]}]"; 
     JSONArray arr= new JSONArray(jsonString); 
     System.out.println(arr.getJSONObject(0).getJSONArray("id").get(0)); 
    } 
} 

输出是4.我猜你需要什么。

+0

谢谢。:) @boukobba adil – user7637864