Spring MVC 如何在GET url查询字符串中传递Json对象

cl25kdpy  于 2023-06-23  发布在  Spring
关注(0)|答案(5)|浏览(165)

我有一个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类包含所有这些字段。我可以利用这门课吗?.

rjzwgtxy

rjzwgtxy1#

我发现以下是目前为止使用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"}}
wgeznvg7

wgeznvg72#

你可以用base64编码你的json字符串,然后在url中使用它:
https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/btoa

eaf3rand

eaf3rand3#

您可以使用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>
olhwl3o2

olhwl3o24#

另一种方法是使用encodeURI和decodeURI函数。首先,我们对JSON字符串进行编码,以便它不会在URL中引起任何问题。当我们得到返回的值时,我们解码字符串,然后解析其JSON。
在这种方法中,内容是人类可读的,并且可以在后端解析,而不需要太多的工作。

const values = {prices:[1,2,3], sale: true, minAmount: 500 };
const json = encodeURI(JSON.stringify(values));
const result = JSON.parse(decodeURI(json));
oalqel3c

oalqel3c5#

谢谢大家,我用过JSON.stringify(filters);和in控制器

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

请回复,如果有更好的方法。

相关问题