Как можно десериализовать JSON в Java, если он содержит $ ref и $ id, сгенерированные Json.Net C # - PullRequest
0 голосов
/ 30 января 2019

У меня есть строка JSON, сгенерированная с использованием библиотеки Json.Net C # со следующими настройками:

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, но был BEGIN_OBJECT в строке 1 столбца 154944path $ .Tables [0] .Columns [4] .ForeignKeyTable.ForeignKeyChildren 1 .Columns [0] .ForeignKeyTable.Indexes

Я положу небольшой фрагмент данных json,обратите внимание на $ id, $ ref: JSON с форматом ссылок

1 Ответ

0 голосов
/ 02 февраля 2019

Наконец я нашел библиотеку java, которую я изменил, чтобы она соответствовала формату сериализатора JsonNet C #:

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

Изменил @id, @ref и @items на $ id, $Значения ref и $ и строковое значение в $ id и $ ref из JsonNet C #, проанализированные в java Long (это число даже в сериализованном формате C #, но в виде строкового типа)

Может быть, это может помочь другимхорошо ..

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

...