[QUESTION] 是否有办法针对List<Object>中不同元素分别指定反序列化时的类型?
- Dominant language
- Java
- Stars
- 4.4k
- Forks
- 613
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 6
Description
### 是否有办法针对List中不同元素分别指定反序列化时的类型?
对于一个List类型的对象list,我可能会在运行时向其中加入不同类型的元素,比如int, String, 或者是我自己定义的java类。
在我使用FastJson将其转换为JSON字符串后,当我想要再将其转换为List时,我能否通过指定特定位置的元素的类型的方式,使得得到的list中,对应位置是该类型的变量?
如果我使用`JSONArray.parseArray(jsonStr, Object.class);`,在我定义的java类的元素上,会返回一个JSONObject类型的元素。
下面展示了一个例子。
```
@Data
@AllArgsConstructor
public static class Inner {
String var1;
String var2;
}
@Test
void testFastJson() {
List 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,是否有相对应的开发计划?
Contributor guide
Research direction
Start with the shown test and trace JSONObject.toJSONString followed by JSONArray.parseArray(jsonStr, Object.class). Check whether Fastjson2 documents or exposes an API for assigning types to individual list positions. Done means establishing whether this behavior is supported, and if not, defining an implementation path or documenting the limitation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100