哪个 API 将 Java List<Object> 转换为 HTTP 表单参数?
Which API to convert Java List<Object> to HTTP Form Parameters?
我有以下 java class:
class Foo{
String param1;
String param2;
}
我有一个List<Foo> myFoos;
(JSON伪代码):
[
{param1="1_1", param2="1_2"},
{param1="2_1", param2="2_2"}
]
如何将其转换为以下(编码的)HTTP 表单参数?
myFoos[0][param1]=1_1
myFoos[0][param2]=1_2
myFoos[1][param1]=2_1
myFoos[1][param2]=2_2
我目前正在使用 Apache HttpClient 4.5,但看不到合适的转换器。
您可以尝试这样的操作:
public String toFormParams(List<?> items, Class clazz) {
String name = clazz.getSimpleName();
// Find public/private members
Field[] fields = clazz.getDeclaredFields();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < items.size(); i++) {
Object item = items.get(i)
for (int f = 0; f < fields.length; f++) {
Field field = fields[f];
// ensure private members can be accessed
field.setAccessible(true);
sb.append(name);
sb.append("[" + i + "]");
sb.append("[" + field.getName() + "]");
sb.append("=" + field.get(item));
sb.append("\n");
}
}
// Remove last \n and return
return sb.deleteCharAt(sb.length() - 1).toString();
}
请注意,我没有测试这个,它可以改进。
我有以下 java class:
class Foo{
String param1;
String param2;
}
我有一个List<Foo> myFoos;
(JSON伪代码):
[
{param1="1_1", param2="1_2"},
{param1="2_1", param2="2_2"}
]
如何将其转换为以下(编码的)HTTP 表单参数?
myFoos[0][param1]=1_1
myFoos[0][param2]=1_2
myFoos[1][param1]=2_1
myFoos[1][param2]=2_2
我目前正在使用 Apache HttpClient 4.5,但看不到合适的转换器。
您可以尝试这样的操作:
public String toFormParams(List<?> items, Class clazz) {
String name = clazz.getSimpleName();
// Find public/private members
Field[] fields = clazz.getDeclaredFields();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < items.size(); i++) {
Object item = items.get(i)
for (int f = 0; f < fields.length; f++) {
Field field = fields[f];
// ensure private members can be accessed
field.setAccessible(true);
sb.append(name);
sb.append("[" + i + "]");
sb.append("[" + field.getName() + "]");
sb.append("=" + field.get(item));
sb.append("\n");
}
}
// Remove last \n and return
return sb.deleteCharAt(sb.length() - 1).toString();
}
请注意,我没有测试这个,它可以改进。