2013-05-02 140 views
2

JSON对象我有一个这样的URL请求:如何读取URL查询字符串

http://localhost:8080:_dc=1367504213107&filter[0][field]=site&filter[0][data][type]=string&filter[0][data][value]=test&filter[1][field]=address&filter[1][data][type]=string&filter[1][data][value]=Columbus 

这是URL请求,我从浏览器中得到。

从这个URL,我需要获取过滤器相关数据作为JSON对象

基本上我有过滤参数,如这些在请求的URL:

filter[0][field]=site 
filter[0][data][type]=string 
filter[0][data][value]=test 
filter[1][field]=address 
filter[1][data][type]=string 
filter[1][data][value]=Columbus 

我使用Spring MVC框架。

+3

这看起来不像JSON。看起来你正在传递一张地图地图列表。无论如何,你应该能够使用ModelAttribute,或者简单地使用RequestParams来抓取它们。但我不确定RequestParams如何处理下标。 – CodeChimp 2013-05-02 19:09:29

回答

2

这些URL参数不是JSON格式。我不确定你的问题在这里是什么......你不能只是从URL中读取每个参数,然后根据需要从字符串中解析数据吗?您可以将其作为单个参数并基于自定义字符进行标记化,也可以循环遍历所有参数并解析每个参数并将其添加到数组中。

你是说你需要以JSON格式返回数据吗?如上所述,使用解析的参数获取数据,然后当数据只是序列化该对象并将其作为响应的主体传回时。您将需要使用像Jackson这样的JSON序列化库,它将为JSON将对象写入JSON字符串中。

1

这是该数据可能会看起来一样,如果它被写了JSON:

{ 
    "filter": 
    [ 
     { 
      "field": "site", 
      "data": 
      { 
       "type": "string", 
       "value": "test" 
      } 
     }, 
     { 
      "field": "address", 
      "data": 
      { 
       "type": "string", 
       "value": "Columbus" 
      } 
     } 
    ] 
} 
从上面的JSON转换到您的格式

Java代码:

JSONObject root = new JSONObject(json); 
JSONArray filters = root.getJSONArray("filter"); 
for (int i = 0; i < filters.length(); i++) 
{ 
    JSONObject filter = filters.getJSONObject(i); 
    String field = filter.getString("field"); 
    JSONObject data = filter.getJSONObject("data"); 
    String dataType = data.getString("type"); 
    String dataValue = data.getString("value"); 
    System.out.println("filter[" + i + "][field]=" + field); 
    System.out.println("filter[" + i + "][data][type]=" + dataType); 
    System.out.println("filter[" + i + "][data][value]=" + dataValue); 
} 

你的数据格式看起来不是标准的,所以你必须自己解析它。