假设我有一些变量:
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吗?
完成答案 0 :(得分:4)
不,你必须手动将它们放入地图中。无法使用反射来查找局部变量的名称或值。
答案 1 :(得分:3)
不要发明轮子 使用Json库并解析您的对象
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.。