如何将Map<String,Object>反序列化为POJO?
2022-09-01 16:37:31
我有一个Map<String,Object>其中包含JSON的反序列化形式。我想将其反序列化为POJO的领域。
我可以使用Gson将Map序列化为JSON字符串,然后将JSON字符串反序列化为POJO来执行此操作,但这效率低下(请参阅下面的示例)。如何在没有中间步骤的情况下执行此操作?
解决方案最好使用Gson或Jackson,因为它们已经被项目使用。
示例代码:
import java.util.HashMap;
import java.util.Map;
import com.google.gson.Gson;
public class Test {
public static void main(String[] args) {
Map<String, Object> innermap = new HashMap<String, Object>();
innermap.put("number", 234);
innermap.put("string", "bar");
Map<String, Object> map = new HashMap<String, Object>();
map.put("number", 123);
map.put("string", "foo");
map.put("pojo2", innermap);
Gson gson = new Gson();
// How to perform this without JSON serialization?
String json = gson.toJson(map);
MyPojo pojo = gson.fromJson(json, MyPojo.class);
System.out.println(pojo);
}
}
class MyPojo {
private int number;
private String string;
private MyPojo pojo2;
@Override
public String toString() {
return "MyPojo[number=" + number + ", string=" + string + ", pojo2=" + pojo2 + "]";
}
}