Как сериализовать динамический объект в строку 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