Java - 将变量列表转换为变量名称到变量值的映射

时间:2016-03-17 18:47:49

标签: java reflection

假设我有一些变量:

public void foo() {
    String name = "Bob";
    String gender = "Male";
    Integer age = 6;
    String address = "some address";
}

如何将它们变成Map<String, Object>之类的

Map<String, Object> map = new HashMap<>();
map.put("name", name);
map.put("gender", gender);
map.put("age", age);
map.put("address", address);

除了手动将它们插入地图之外。可以使用Reflection吗?

完成

4 个答案:

答案 0 :(得分:4)

不,你必须手动将它们放入地图中。无法使用反射来查找局部变量的名称或值。

答案 1 :(得分:3)

不要发明轮子 使用Json库并解析您的对象

示例(使用Gson ......):

public class GenericTypeData {
    private String name = "Bob";
    private String gender = "Male";
    private int age = 6;
    private String address = "some address";

    public GenericTypeData( ) {
        this.name = "Bob";
        this.gender = "Male";
        this.age = 6;
        this.address = "some address";
    }

    public static void main(String[] args) {
        System.out.println(new Gson().ToJson(this, GenericTypeData.class));
    }

}

你会得到一个喜欢

的json
{
    "name": "Bob",
    "gender": "Male",
    "age": 6,
    "address": "some address", 
}

答案 2 :(得分:0)

如果您的变量是固定的类转换为map,那么您可以将它们转换为json。

您可以先准备包含变量的对象,然后使用toJson()方法将其转换为您在问题中指定的格式。

link可能有助于toJson()使用google gson library方法。

答案 3 :(得分:0)

如果您对String感兴趣,可以使用ReflectionToStringBuilder.toString(Object, ToStringStyle)使用JSON_STYLE的方法Apache Commons Lang.