我有一个使用外部库(杰克逊)的应用程序,我需要的方法需要一个类文字作为参数。因此,如果我希望将我的 JSON 字符串解析为 User 对象:
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(new File("user.json"), User.class);
现在,我希望动态地使用此方法(即使用同一行代码解析不同的 JSON 字符串)。例如:
String json1 = "{"type":"jacket",...}";
String json2 = "{"type":"sweater",...}";
Object object = mapper.readValue(json1/json2, ???);
//returns a Jacket object OR Sweater object based on the "type" key
//i.e. use Jacket.class as the 2nd argument if "type" is "jacket"
//OR Sweater.class if "type" is "sweater"
//After getting the deserialized object,
//if object is Jacket, cast as a Jacket
//if object is Sweater, cast as a Sweater
当然,有问题的 JSON 字符串可以用于任何类,所以我不能简单地硬编码 if-else 循环。我已经查看了自定义序列化程序,但坦率地说,我对它在谈论什么感到很迷茫,并且希望得到一些帮助来解决这个问题。
总之,我需要一些方法来首先从 String 定义一个类文字,然后将生成的 Object 转换为特定的类(但我的重点是readValue
动态地工作)。