有没有办法将对象转换为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不是我正在寻找的东西,因为它除了将对象转换为参数字符串之外还做其他所有事情。
答案 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)
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>