java - 当JSON包含Json.Net C#生成的$ref和$id时,如何在Java中反序列化

标签 java c# json.net deserialization

我使用 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#序列化格式中它也是一个数字,但它是字符串类型)

也许这也可以帮助其他人..

https://github.com/LucaGabi/json-io.git

关于java - 当JSON包含Json.Net C#生成的$ref和$id时,如何在Java中反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54449023/

相关文章:

asp.net-core - 捕获 json.net 序列化错误

java - Android:下载的图像未显示在 ListView 中

c# - 根据结果​​集更新或插入数据库中的记录

c# - 检查通用类型

c# - 如何使用 PLINQ 进行延迟加载?

c# - 名称为 'Id' 的成员已存在于 `Model` 上。使用 JsonPropertyAttribute 指定另一个名称

jquery - 自动转换 $.AJAX 响应中的所有日期

java - 如何修复 Runnable 中 run 方法的编译器问题 "method does not override a method from its superclass @Override"?

java - 删除 Swing 内容 Pane /面板并显示新面板

java - 使用 Azure SDK for Java 调用 Azure Migrate Rest Api