Как преобразовать объект в строку запроса с пружиной (или что-нибудь еще)? - PullRequest
1 голос
/ 02 апреля 2012

Есть ли способ конвертировать объект в параметры запроса GET-запроса?Какой-то сериализатор, который преобразует объект NameValuePair в name = aaa & value = bbb, так что строка может быть присоединена к запросу GET.

Другими словами, я ищу библиотеку, которая принимает
1.url (http://localhost/bla)
2. Объект:
public class Obj {<br> String id;<br> List<NameValuePair> entities;<br> }
И преобразует его в:
http://localhost/bla?id=abc&entities[0].name=aaa&entities[0].value=bbb

Spring RestTemplate - это не то, что я ищу, так какон делает все остальное, кроме преобразования объекта в строку параметров.

Ответы [ 3 ]

2 голосов
/ 30 января 2017
// 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();
1 голос
/ 02 апреля 2012

использовать com.sun.jersey.api.client.Client:

Client.create().resource("url").queryParam(key, value).get()
0 голосов
/ 30 апреля 2019
  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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...