2013-05-02 138 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); 
} 

你的數據格式看起來不是標準的,所以你必須自己解析它。