我使用 Json.Net C# 库通过以下设置生成了一个 JSON 字符串:
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
Formatting = Newtonsoft.Json.Formatting.Indented,
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore,
PreserveReferencesHandling = PreserveReferencesHandling.All
};
请注意 PreserveReferencesHandling 在 json 中生成引用,而不是在每个对象引用上复制(重复)相同的对象。
如何在 java 中反序列化结果? Google Gson 库无法解析。
更新: 在我看来,这个错误没有多大帮助: com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为 BEGIN_ARRAY,但在第 1 行第 154944 列路径 $.Tables[0].Columns[4].ForeignKeyTable.ForeignKeyChildren 1 处为 BEGIN_OBJECT .Columns[0].ForeignKeyTable.Indexes
我将放入一小段 json 数据,记下 $id、$ref: JSON with references format
最佳答案
最后我找到了一个java库,我修改了它以符合JsonNet C#序列化器格式:
https://github.com/jdereg/json-io
将@id、@ref和@items更改为$id、$ref和$values,并将$id和$ref中的字符串值从JsonNet C#解析为java Long(即使在C#序列化格式中它也是一个数字,但它是字符串类型)
也许这也可以帮助其他人..
关于java - 当JSON包含Json.Net C#生成的$ref和$id时,如何在Java中反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54449023/