繁体   English   中英

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

[英]How can JSON be deserialized in Java when it contains $ref and $id generated by Json.Net C#

我使用具有以下设置的 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] 处为 BEGIN_OBJECT。 ForeignKeyTable.ForeignKeyChildren 1 .Columns[0].ForeignKeyTable.Indexes

我放一小段json数据,注意$id, $ref: JSON with references format

最后我找到了一个我修改为符合 JsonNet C# 序列化程序格式的 java 库:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM