提问者:小点点

JSON包含Json.Net c#生成的$ref和$id,如何用Java反序列化


我有一个JSON字符串生成使用Json.NetC#库与此设置:

JsonConvert.DefaultSettings = () => new JsonSerializerSettings
            {
                Formatting = Newtonsoft.Json.Formatting.Indented,
                ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore,
                PreserveReferencesHandling = PreserveReferencesHandling.All
            };

请注意,保留引用处理在json中生成引用,而不是在每个对象引用上复制(复制)相同的对象。

如何用java反序列化结果?谷歌Gson库解析失败。

更新:在我看来,这个错误帮不上什么忙:com.google. gson.JsonSynateException:java.lang.IllegalStateException:预期BEGIN_ARRAY但在第1行第154944列路径$.表[0].列[4].ForeignKeyTable.ForeignKeyChildren1.列[0].ForeignKeyTable.索引

我将放置一小段 json 数据,注意$id,$ref:带有引用格式的 JSON


共1个答案

匿名用户

最后我找到了一个我修改为符合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