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

时间:2019-01-30 20:28:22

标签: 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。Columns [0]处为BEGIN_OBJECT。 .ForeignKeyTable.Indexes

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

1 个答案:

答案 0 :(得分:1)

最后,我找到了一个经过修改以符合JsonNet C#序列化器格式的Java库:

https://github.com/jdereg/json-io

将@ id,@ ref和@items更改为$ id,$ ref和$ values,并将来自JsonNet C#的$ id和$ ref中的字符串值解析为Java Long(即使是C#序列化格式,它也是一个数字,但是是字符串类型)

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

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