正如上面的@query
注释的改装文档中所述:
传递列表或数组将为每个非空项生成一个查询参数。
到目前为止,我的呼叫看起来如下所示:
@GET("questions")
Call<List<QuestionHolder>> getQuestionsExcludingTheSpecified(
@Query("exclude_ids") long[] excludedQuestionIds
);
这是可行的,但会导致相当长的URL和相当快的URL。
例如。对于excludedQuestionIds=new long[]{1L,4L,16L,64L}
,请求URL已经是/questions?exclude_ids=1&exclude_ids=4&exclude_ids=16&exclude_ids=64
。
是否有一种简单的方法来交换这种导致数组格式化为exclude_ids=[1,4,16,64]
或类似内容的行为?
我想到的是:
@query
修饰符有什么想法吗?
我决定采用拦截器的方法。我只是更改包含单个查询参数的多个值的任何传出请求。
public class QueryParameterCompressionInterceptor implements Interceptor {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Request request = chain.request();
HttpUrl url = request.url();
for (String parameterName : url.queryParameterNames()) {
List<String> queryParameterValues = url.queryParameterValues(parameterName);
if (queryParameterValues.size() > 1) {
String formattedValues= "[" + TextUtils.join(",", queryParameterValues) + "]";
request = request.newBuilder()
.url(
url.newBuilder()
.removeAllQueryParameters(parameterName)
.addQueryParameter(parameterName, formattedValues)
.build()
).build();
}
}
return chain.proceed(request);
}
非android解决方案
TextUtils是Android SDK的一部分,如果您不是为Android开发的,您可以将TextUtils.join交换为以下方法:
public static String concatListOfStrings(String separator, Iterable<String> strings) {
StringBuilder sb = new StringBuilder();
for (String str : strings) {
sb.append(separator).append(str);
}
sb.delete(0, separator.length());
return sb.toString();
}
}
您也可以查看这个SO问题,以获得更多关于级联的解决方案。
我想把列表更改为json格式。我该怎么办? Java script部分我无法获得这样的代码部分
我尝试使用谷歌图表,谷歌图表中的数据格式像 打印时间输出为: 问题是我不知道如何添加'new Date()',并将Date放入括号中不加引号。有什么想法吗??提前谢谢!
我们正在从具有日期的数据库中检索列表。我们希望以不同的格式显示它。假设2014年11月10日。 这是我的密码 跟踪1: 小径2: 但它会带来错误。有什么方法,我们可以使用,以获得所需的日期格式在Laravel? 正常查询:
我定义了静态最终ArrayList,然后我将其发送到其他类进行更改。但它应该只在第二个类中本地更改,因为他是最终的,就像我示例中的int一样。为什么它也在Main类中更改? 小代码示例: 我的输出: 我所期望的是:
问题内容: 我有这个网址: 我需要的是能够将“行”的url参数值更改为我指定的值,比方说10。如果“行”不存在,则需要将其添加到url的末尾并添加我已经指定的值(10)。 问题答案: 在学到很多东西之后的四年后,回答我自己的问题。特别是您不应该将jQuery用于所有功能。我创建了一个可以解析/字符串化查询字符串的简单模块。这使得修改查询字符串变得容易。 您可以按以下方式使用查询字符串:
在本期续篇中 主代码: 然后我需要得到一个最接近给定日期的值列表: 然后弄一张这样的桌子: 但如何才能得到这种格式的结果: 我在此上下文中使用pivot的所有尝试都没有成功。 更新 根据@Gordon Linoff和@xxx的建议,尝试重做使用Dinamic SQL的代码,现在开始: ‘op为(选择op.id_object,op.id_param,name,op.cdate,op.value,RO