首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java中将对象转换为查询字符串?

如何在Java中将对象转换为查询字符串?
EN

Stack Overflow用户
提问于 2018-09-26 05:28:34
回答 4查看 8.3K关注 0票数 7

我正在尝试将以下对象转换为查询字符串,以便可以与GET请求一起使用。

代码语言:javascript
复制
Class A {
  String prop1;
  String prop2;
  Date date1;
  Date date2;
  ClassB objB;
}

Class B {
 String prop3;
 String prop4;
}

我们可以将第一个对象转换为Map,然后使用URIComponentsBuilder.fromHttpUrl("httpL//example.com").queryParams(multiValueMap).build();将map转换为MultiValueMap

有没有更短更好的方法将对象转换为查询字符串,以便在Spring Project for Junit Test中与GET请求一起使用?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-09-26 06:11:29

为什么先转换成Map,然后再转换成MultiValueMap,而不是直接构建它呢?

代码语言:javascript
复制
DateFormat dateFmt = new SimpleDateFormat("whatever date format you want");
URIComponentsBuilder.fromHttpUrl("httpL//example.com")
                    .queryParam("prop1", a.prop1)
                    .queryParam("prop2", a.prop2)
                    .queryParam("date1", dateFmt.format(a.date1))
                    .queryParam("date2", dateFmt.format(a.date2))
                    .queryParam("prop3", a.objB.prop3)
                    .queryParam("prop4", a.objB.prop4)
                    .build();
票数 3
EN

Stack Overflow用户

发布于 2018-09-26 08:45:15

您可以编写自己的使用java.lang.reflect的方法。下面是一个例子

代码语言:javascript
复制
public static String getRequestString(String urlString, Class clazz, Object o){
    String queryString = "?";

    try {
        for (Field f : clazz.getDeclaredFields()) {
            f.setAccessible(true);
            queryString += queryString.concat(f.getName() + "=" + String.valueOf(f.get(o)) + "&");
        }
    }catch (Exception e){
        e.printStackTrace();
    }

    return urlString + queryString.substring(0,queryString.length()-1);
}
票数 2
EN

Stack Overflow用户

发布于 2018-09-26 07:28:11

OpenFeign具有注释@QueryMap,用于根据对象属性以dinamicaly方式生成查询参数:

代码语言:javascript
复制
public interface Api {
  @RequestLine("GET /find")
  V find(@QueryMap CustomPojo customPojo);
}

欲了解更多信息,请访问:https://github.com/OpenFeign/feign#dynamic-query-parameters

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52506949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档