如何使用spring(或其他任何东西)将对象转换为查询字符串?

时间:2012-04-02 13:32:10

标签: java http spring-mvc

有没有办法将对象转换为GET请求的查询参数? 某种将NameValuePair对象转换为name = aaa& value = bbb的序列化程序,以便该字符串可以附加到GET请求。

换句话说,我正在寻找一个带有中文的图书馆 1. url(http://localhost/bla
2.对象:
public class Obj {
String id;
List<NameValuePair> entities;
}

并将其转换为:
http://localhost/bla?id=abc&entities[0].name=aaa&entities[0].value=bbb

Spring RestTemplate不是我正在寻找的东西,因为它除了将对象转换为参数字符串之外还做其他所有事情。

3 个答案:

答案 0 :(得分:2)

'http://example.com/glamour/url.php?ad_id=[ad_id]&pubid=[pubid]&click_id=[click_id]'

答案 1 :(得分:1)

使用com.sun.jersey.api.client.Client:

Client.create().resource("url").queryParam(key, value).get()

答案 2 :(得分:0)

  1. 将对象转换为地图
  2. 将地图转换为QueryString
package util;

import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.Map;

public class ObjectConvertUtil {
    // convert Object to queryString 
    public static String toQS(Object object){

        // Object --> map
        ObjectMapper objectMapper = new ObjectMapper();
        Map<String, Object> map =
                objectMapper.convertValue(
                        object, Map.class);


        StringBuilder qs = new StringBuilder();
        for (String key : map.keySet()){

            if (map.get(key) == null){
                continue;
            }
            // key=value&
            qs.append(key);
            qs.append("=");
            qs.append(map.get(key));
            qs.append("&");
        }

        // delete last '&'
        if (qs.length() != 0) {
            qs.deleteCharAt(qs.length() - 1);
        }
        return qs.toString();
    }
}

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.8</version>
        </dependency>