632*_*324 5 java serialization casting jackson
以下两种转换Object为 的方法有什么区别Map?假设两种方法都可以将 an 转换Object为 a ,哪种方法更好Map?
投掷:
Object o = some object;
Map<String, Object> map = (Map<String, Object>) o;
Run Code Online (Sandbox Code Playgroud)
对象映射器:
Object o = some object;
Map<String, Object> map = new ObjectMapper().readValue((String) o, new TypeReference<Map<String, Object>>() {});
Run Code Online (Sandbox Code Playgroud)
这取决于输入是什么。
(Map<String, Object>) o用于强制转换,因此 的运行时类型o必须是Map,否则ClassCastException会抛出:
Object o = new HashMap<>();
Map<String, Object> map = (Map<String, Object>) o; // ok
Object o = new ArrayList<>();
Map<String, Object> map = (Map<String, Object>) o; //ClassCastException
Object o = new String();
Map<String, Object> map = (Map<String, Object>) o; //ClassCastException
Run Code Online (Sandbox Code Playgroud)ObjectMapper().readValue(String content, JavaType valueType):
从给定 JSON 内容字符串反序列化 JSON 内容的方法。
这意味着输入应该是String有效的json格式。例如:
Object input = "{\"key1\":{},\"key2\":{}}";
Map<String, Object> map = new ObjectMapper().readValue((String) input, new TypeReference<Map<String, Object>>() {});
System.out.println(map.size()); // 2
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
7780 次 |
| 最近记录: |