2015-10-08 77 views
0

在JavaScript中JSON對象,我如何通過JSON對象中獲取URL查詢字符串

filters = Object {assetType: "CAR~LIGHT TRUCK", bodyType: "SEDAN~SPORT UTIL"} 

我需要在查詢字符串5個字符串值一起傳遞這些價值。

url = '/starHome/exportToCsv/'+tier+'/?period='+period+'&level2='+level2+'&level3='+level3+'&level4='+level4+'&filters='+filters; 

window.location.href = url; 當我試圖在控制器 request.getparamter("filters");獲得濾波器參數值,我得到「[object object]

我怎麼能將該值傳遞給控制器​​? 我有一個pojo類包含所有這些領域。我可以利用那個班嗎?

回答

0

謝謝大家, 我已經使用JSON.stringify(filters); and in controller

String filtersString = request.getParameter("filters"); 
Map<String,Object> result = new ObjectMapper().readValue(filtersString, HashMap.class); 

如果有更好的方法,請回復。

1

您可能能夠使用jQuery.param()

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script> 
    <script type="text/javascript"> 
    var filters = {assetType: "CAR~LIGHT TRUCK", bodyType: "SEDAN~SPORT UTIL"}; 
    filters = jQuery.param(filters); 
    console.log("filters ", filters); 
    //filters assetType=CAR~LIGHT+TRUCK&bodyType=SEDAN~SPORT+UTIL 

    url = '/starHome/exportToCsv/'+tier+'/?period='+period+'&level2='+level2+'&level3='+level3+'&level4='+level4+'&filters='+filters; 
    </script> 
+0

jQuery.param()很好,但有沒有一種方法可以將該值存入控制器中的Map ? – gauti

1

我發現以下作爲迄今使用Javasript

var a = {a:'foo',b:[1,2,3],g: {q:"8798"}}; 

var b = window.btoa(JSON.stringify(a)); 

console.log(b) // output eyJhIjoiZm9vIiwiYiI6WzEsMiwzXSwiZyI6eyJxIjoiODc5OCJ9fQ 

// restore b again 
console.log(JSON.parse(window.atob(b))); // output : {a:'foo',b:[1,2,3],g: {q:"8798"}} 
+1

你正在恢復B在Java腳本本身。我的問題是讓他們進入後端控制器。 – gauti

+0

哎呀,我錯過了這一個,但總的來說還是相同的原理,你可以解碼java中的base64字符串,然後將其解析爲JSONObject –