Hi
We are testing FastJson2 in a spring-boot based application and we have a DTO with the @JsonManagedReference and @JsonBackReference annotation and it is being supported and throws the following exception:
com.alibaba.fastjson2.JSONException: level too large : 2048
at com.alibaba.fastjson2.JSONWriterUTF16.startObject(JSONWriterUTF16.java:122)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
at com.alibaba.fastjson2.writer.ObjectWriter2.write(ObjectWriter2.java:71)
at com.alibaba.fastjson2.writer.OWG_1_2_Item.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:353)
at com.alibaba.fastjson2.writer.FieldWriterListFunc.write(FieldWriterListFunc.java:76)
Test to reproduce:
public class JsonManagedReferenceTest {
@Test
public void testJsonBackReference() throws Exception {
// given
final JsonManagedReferenceDTO dto = new JsonManagedReferenceDTO();
final Item item = new Item();
item.setItemName("Item1");
item.setUser(dto);
dto.getItems().add(item);
// when
final ObjectMapper mapper = new ObjectMapper();
final String jsonJackson = mapper.writeValueAsString(dto);
final String jsonFastjson2 = JSON.toJSONString(dto);
// then
assertThat(jsonJackson).isEqualTo(jsonFastjson2);
}
static class JsonManagedReferenceDTO {
String id;
@JsonManagedReference
private List<Item> items = new ArrayList<>();
public String getId() {
return this.id;
}
public void setId(final String id) {
this.id = id;
}
public List<Item> getItems() {
return this.items;
}
public void setItems(final List<Item> items) {
this.items = items;
}
static class Item {
private String itemName;
@JsonBackReference
private JsonManagedReferenceDTO user;
public String getItemName() {
return this.itemName;
}
public void setItemName(final String itemName) {
this.itemName = itemName;
}
public JsonManagedReferenceDTO getUser() {
return this.user;
}
public void setUser(final JsonManagedReferenceDTO user) {
this.user = user;
}
}
}
}
I have tried adding
String jsonFastjson2 = JSON.toJSONString(dto, Feature.ReferenceDetection); and the result is not correct either:
Result FastJson2
{"items":[{"itemName":"Item1","user":{"$ref":"$"}}]}
Result Jackson
{"id":null,"items":[{"itemName":"Item1"}]}
Thank you very much
Hi
We are testing
FastJson2in a spring-boot based application and we have a DTO with the@JsonManagedReferenceand@JsonBackReferenceannotation and it is being supported and throws the following exception:Test to reproduce:
I have tried adding
Result FastJson2
{"items":[{"itemName":"Item1","user":{"$ref":"$"}}]}Result Jackson
Thank you very much