Как сериализовать динамический объект в строку JSON в ядре dotnet?

Я передаю полезные данные JSON контроллеру 9X_csharp API, и одно из полей является динамическим, потому 9X_json-encode что поле необходимо снова передать как строку 9X_dotnetcore JSON в другой API. Средний уровень dotnet 9X_csharp core 3.1 не должен заниматься вводом текста, так 9X_visual-c# как полезная нагрузка изменится.

Это объект, который 9X_json-parsing передается в контроллер API:

 public class GitHubAction { [JsonProperty("Title")] public string Title { get; set; } [JsonProperty("Enabled")] [JsonConverter(typeof(BooleanParseStringConverter))] public bool Enabled { get; set; } [JsonProperty("Action")] [JsonConverter(typeof(ExpandoObjectConverter))] public dynamic Action { get; set; } } 

Вот изображение 9X_dotnet-core того объекта dynamic, который выглядит в VSCode:

9X_Как сериализовать динамический объект в строку JSON в ядре dotnet?_newtonsoft

Когда 9X_json.net я использую JsonConvert.SerializeObject(x.Action);, строковый результат не преобразуется 9X_c# должным образом, а вместо этого сериализуется 9X_dotnet-core в ValueKind: "{\"ValueKind\":1}".

Я хочу получить значение объекта 9X_dotnet-httpclient действия в виде строки JSON, которая должна 9X_json.net выглядеть как "{"createRepository":{"onboarding":{"service":{"organization":"foo","repositoryName":"foo-2-service","description":"A test service."}}}}"

Есть ли простое решение для 9X_json сериализации динамического объекта?

11
2

  • Используется ли это Newtonsoft.Json или System.T ...
3
Общее количество ответов: 3

Ответ #1

Ответ на вопрос: Как сериализовать динамический объект в строку JSON в ядре dotnet?

У меня была такая же проблема, и я решил 9X_dotnetcore ее вот так

using System.Text.Json; string serializedObject = JsonSerializer.Serialize(x.Action); //Instead of use JsonConvert.SerializeObject(x.Action); 

Вместо Newtonsoft.Json вы должны использовать 9X_dotnet-core System.Text.Json.

21
0

Ответ #2

Ответ на вопрос: Как сериализовать динамический объект в строку JSON в ядре dotnet?

Используйте Newtonsoft.Json вместо System.Text.Json 9X_visual-c# по умолчанию

Добавьте пакет Microsoft.AspNetCore.Mvc.NewtonsoftJson 9X_json-encode из nuget и services.AddControllers(). AddNewtonsoftJson() в 9X_json Startup.cs / ConfigureServices()

5
0

Ответ #3

Ответ на вопрос: Как сериализовать динамический объект в строку JSON в ядре dotnet?

Попробуйте это

var jsonString=s.Action.ToString(); 

Это даст вам строку json

9X_c-sharp

1
0