哪个 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();
}

请注意,我没有测试这个,它可以改进。