反射Java将变量列表转换为变量名到变量值的映射
假设我有几个变量:
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);
而不是手动将它们插入地图。这可以通过反射来实现吗
# 1 楼答案
不要重新发明轮子 使用Json库解析对象
示例(使用Gson…):
你会得到一个类似json的
# 2 楼答案
如果你的变量是固定的,可以将一个类转换成map,那么你可以将它们转换成json
您可以先准备包含变量的对象,然后使用
toJson()
方法将其转换为问题中指定的格式这个link可能有助于使用
google gson library
中的toJson()
方法# 3 楼答案
不,你必须手动把它们放到地图上。不可能使用反射来查找局部变量的名称或值
# 4 楼答案
如果您对String感兴趣,可以使用Apache Commons Lang.中的ReflectionToStringBuilder.toString(Object, ToStringStyle)方法使用
JSON_STYLE