Open fwhdzh opened 1 week ago
对于一个List类型的对象list,我可能会在运行时向其中加入不同类型的元素,比如int, String, 或者是我自己定义的java类。
在我使用FastJson将其转换为JSON字符串后,当我想要再将其转换为List时,我能否通过指定特定位置的元素的类型的方式,使得得到的list中,对应位置是该类型的变量?
如果我使用JSONArray.parseArray(jsonStr, Object.class);,在我定义的java类的元素上,会返回一个JSONObject类型的元素。
JSONArray.parseArray(jsonStr, Object.class);
下面展示了一个例子。
@Data @AllArgsConstructor public static class Inner { String var1; String var2; } @Test void testFastJson() { List<Object> list = new ArrayList<>(); list.add("s1"); list.add(2); Inner m = new Inner("v1", "v2"); list.add(m); String jsonStr = JSONObject.toJSONString(list); List<?> list2 = JSONArray.parseArray(jsonStr, Object.class); assertEquals(list, list2); }
运行该测试用例会报错:
org.opentest4j.AssertionFailedError: expected: [[s1, 2, MyTest.Inner(var1=v1, var2=v2)]] but was: [[s1, 2, {"var2":"v2","var1":"v1"}]] at .......
目前,FastJson是否具有特定的API,可以比较方便的指定反序列化时,列表不同位置的元素的类型? 如果目前没有特定的API,是否有相对应的开发计划?
是否有办法针对List中不同元素分别指定反序列化时的类型?
对于一个List
在我使用FastJson将其转换为JSON字符串后,当我想要再将其转换为List
如果我使用
JSONArray.parseArray(jsonStr, Object.class);
,在我定义的java类的元素上,会返回一个JSONObject类型的元素。下面展示了一个例子。
运行该测试用例会报错:
目前,FastJson是否具有特定的API,可以比较方便的指定反序列化时,列表不同位置的元素的类型? 如果目前没有特定的API,是否有相对应的开发计划?