-
Notifications
You must be signed in to change notification settings - Fork 547
Closed
Labels
Milestone
Description
问题描述
将java对象序列化为json字符串时报错,fastjson 1.2.83运行正常,fastjson2 2.0.50运行报错
环境信息
请填写以下信息:
- OS信息: [Windows 11]
- JDK信息: [Oracle OpenJDK 17.0.7]
- 版本信息:[Fastjson2 2.0.50]
重现步骤
如何操作可以重现该问题:
- 使用
JSON.toJSONString()方法 - 输入
test.json数据
{
"dets": [
{
"fields": [
{
"fname": "字段A",
"value": ""
},
{
"fname": "字段B",
"value": ""
}
]
},
{
"fields": [
{
"fname": "字段C",
"value": ""
},
{
"fname": "字段D",
"value": ""
}
]
}
]
}- 出现
com.alibaba.fastjson.JSONException: toJSONString error错误
// DynPage.java
@Data
public class DynPage {
private List<DynArea> dets;
}
// DynArea.java
@Data
public class DynArea {
private List<DynField> fields;
}
// DynField.java
@Data
public class DynField {
private String fname;
private Serializable value;
}
// FastjsonTest.java
@Slf4j
class FastjsonTest {
@Test
@SneakyThrows
void dynPageToJSONString() {
ClassPathResource resource = new ClassPathResource("test.json");
try (InputStream is = resource.getInputStream()) {
String json = IOUtils.toString(is, StandardCharsets.UTF_8);
DynPage data = JSON.parseObject(json, DynPage.class);
log.info("{}", data);
Assertions.assertNotNull(data);
String jsonv = JSON.toJSONString(data);
log.info(jsonv);
Assertions.assertNotNull(jsonv);
}
}
}期待的正确结果
能够正确的序列化java对象为json字符串
相关日志输出
请复制并粘贴任何相关的日志输出。
com.alibaba.fastjson.JSONException: toJSONString error
at com.alibaba.fastjson.JSON.toJSONString(JSON.java:1527)
at com.bulain.fastjson.FastjsonTest.dynPageToJSONString(FastjsonTest.java:60)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: java.lang.NullPointerException: Cannot read field "child1" because "this.path" is null
at com.alibaba.fastjson2.JSONWriter.setPath(JSONWriter.java:189)
at com.alibaba.fastjson2.JSONWriter.writeReference(JSONWriter.java:172)
at com.alibaba.fastjson2.writer.FieldWriterList.writeListValue(FieldWriterList.java:219)
at com.alibaba.fastjson2.writer.OWG_1_1_DynPage.write(Unknown Source)
at com.alibaba.fastjson.JSON.toJSONString(JSON.java:1519)
... 4 more
附加信息
如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。