Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用spring(或其他任何工具)将对象转换为查询字符串?_Java_Http_Spring Mvc - Fatal编程技术网

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

Java 如何使用spring(或其他任何工具)将对象转换为查询字符串?,java,http,spring-mvc,Java,Http,Spring Mvc,是否有方法将对象转换为GET请求的查询参数? 某种序列化程序,将NameValuePair对象转换为name=aaa&value=bbb,以便将字符串附加到GET请求 换句话说,我正在寻找一个可以容纳 1.url(http://localhost/bla) 2.对象: 公共类对象{ 字符串id; 列出实体; } 并将其转换为: http://localhost/bla?id=abc&entities[0]。名称=aaa&实体[0]。值=bbb Spring RestTemplate不是我想要的,

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

换句话说,我正在寻找一个可以容纳
1.url(
http://localhost/bla

2.对象:
公共类对象{
字符串id;
列出实体;
}

并将其转换为:
http://localhost/bla?id=abc&entities[0]。名称=aaa&实体[0]。值=bbb


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

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

Client.create().resource("url").queryParam(key, value).get()
//要映射的对象
ObjectMapper ObjectMapper=新的ObjectMapper();
Map Map=objectMapper.convertValue(obj,newtypereference(){});
//映射到多值映射
LinkedMultiValueMap LinkedMultiValueMap=新建LinkedMultiValueMap();
forEach(e->linkedMultiValueMap.add(e.getKey(),e.getValue());
//调用restemplate.exchange
返回getRestTemplate().exchange(
uriBuilder().path(“您的路径”).queryParams(linkedMultiValueMap).build().Tori(),
HttpMethod.GET,
无效的
新的ParameteredTypeReference(){}).getBody();
  • 将对象转换为地图
  • 将映射转换为查询字符串
  • package-util;
    导入com.fasterxml.jackson.databind.ObjectMapper;
    导入java.util.Map;
    公共类ObjectConvertUtil{
    //将对象转换为查询字符串
    公共静态字符串TOQ(对象){
    //对象-->映射
    ObjectMapper ObjectMapper=新的ObjectMapper();
    地图=
    objectMapper.convertValue(
    对象,Map.class);
    StringBuilder qs=新的StringBuilder();
    for(字符串键:map.keySet()){
    if(map.get(key)==null){
    继续;
    }
    //键=值&
    qs.append(键);
    q.追加(“=”);
    qs.append(map.get(key));
    q.追加(“&”);
    }
    //删除最后一个“&”
    如果(qs.length()!=0){
    qs.deleteCharAt(qs.length()-1);
    }
    返回qs.toString();
    }
    }
    
    
    com.fasterxml.jackson.core
    杰克逊数据绑定
    2.9.8
    
    如果您使用的是RESTFUL通信,是的。您可以在上找到一个简单的示例,实际上我问的是相反的问题。我想编写java客户机,它可以向这样的控制器发送请求。我需要将一个对象转换为参数。在这种情况下
    // object to Map
    ObjectMapper objectMapper = new ObjectMapper();
    Map<String, String> map = objectMapper.convertValue(obj, new TypeReference<Map<String,String>>() {});
    
    // Map to MultiValueMap
    LinkedMultiValueMap<String, String> linkedMultiValueMap = new LinkedMultiValueMap<>();
    map.entrySet().forEach(e -> linkedMultiValueMap.add(e.getKey(), e.getValue()));
    
    // call RestTemplate.exchange
    return getRestTemplate().exchange(
            uriBuilder().path("your-path").queryParams(linkedMultiValueMap).build().toUri(),
            HttpMethod.GET,
            null,
            new ParameterizedTypeReference<List<YourTypes>>() {}).getBody();