如何在 GET url 查询字符串中传递 Json 对象
How to Pass Json object in GET url query string
我在 javascript、
中有一个 json 对象
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 class 包含所有这些字段。我可以利用那个 class 吗?
您可以在 base64 中对 json 字符串进行编码,然后在 url:
中使用它
https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/btoa
您也许可以使用 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>
谢谢大家,
我用过 JSON.stringify(filters);
在控制器中
String filtersString = request.getParameter("filters");
Map<String,Object> result = new ObjectMapper().readValue(filtersString, HashMap.class);
如果有更好的方法,欢迎回复。
我发现以下是迄今为止使用 Javascript 的最佳解决方案
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"}}
我在 javascript、
中有一个 json 对象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 class 包含所有这些字段。我可以利用那个 class 吗?
您可以在 base64 中对 json 字符串进行编码,然后在 url:
中使用它https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/btoa
您也许可以使用 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>
谢谢大家,
我用过 JSON.stringify(filters);
在控制器中
String filtersString = request.getParameter("filters");
Map<String,Object> result = new ObjectMapper().readValue(filtersString, HashMap.class);
如果有更好的方法,欢迎回复。
我发现以下是迄今为止使用 Javascript 的最佳解决方案
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"}}