2

我有一个这样的 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 框架。

4

2 回答 2

2

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

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

于 2013-05-16T21:25:37.300 回答
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);
} 

您的数据格式似乎不是标准的,因此您必须自己解析它。

于 2013-05-16T22:02:14.780 回答