Проблема с десериализацией в проекте Blazor - PullRequest
0 голосов
/ 08 декабря 2018

Когда я пытаюсь десериализовать строку JSON в класс, у меня есть исключение, я использую Newtonsoft.Json

Я делаю это так:

MyClass response = JsonConvert.DeserializeObject<MyClass>(JsonString);

И тот же код сте же данные в проекте C # .net Core API с Newtonsoft.Json хорошо работают, но в Blazor проекте есть исключение

blazor.webassembly.js: 1 WASM: необработанное исключение: blazor.webassembly.js: 1 WASM: System.TypeLoadException: Не удалось загрузить тип поля 'Newtonsoft.Json.Linq.JToken: _parent' (1) из-за: Не удалось разрешить тип с токеном 010000f5 из typeref (ожидаемый класс 'System.Collections.Specialized.INotifyCollectionChanged «в сборке» mscorlib, версия = 2.0.5.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e ') сборка: mscorlib, версия = 2.0.5.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e тип: System.ColizedColin: (ноль)

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Вы пытались использовать Microsoft.JSInterop.Json.Deserialize вместо NewtonSoft!?

В настоящее время вы не можете использовать Json.Net "из коробки".Эта проблема может быть связана с компоновщиком IL, поэтому добавьте его в файл проекта:

<PropertyGroup>
  <BlazorLinkOnBuild>false</BlazorLinkOnBuild>
</PropertyGroup>

См. Это: https://blazor.net/docs/host-and-deploy/configure-linker.html#disable-linking-with-an-msbuild-property

Или терпеливо подождите, пока Microsoft опубликует свою новую систему Json.можно использовать вместо Json.Net

Надеюсь, это поможет ...

0 голосов
/ 08 декабря 2018

Похоже, это ошибка https://github.com/aspnet/Blazor/issues/1692

Вам необходимо отключить связывание https://blazor.net/docs/host-and-deploy/configure-linker.html#disable-linking-with-an-msbuild-property

<PropertyGroup>
  <BlazorLinkOnBuild>false</BlazorLinkOnBuild>
</PropertyGroup>
...