Как сериализовать динамический объект в строку 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.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 сериализации динамического объекта?
- Используется ли это Newtonsoft.Json или System.T ...
Ответ #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
.
Ответ #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()
Ответ #3
Ответ на вопрос: Как сериализовать динамический объект в строку JSON в ядре dotnet?
Попробуйте это
var jsonString=s.Action.ToString();
Это даст вам строку json
9X_c-sharp
-
3
-
6
-
1
-
1
-
1
-
2
-
2
-
3
-
2
-
2
-
1
-
1
-
1
-
2
-
2
-
2
-
2
-
3
-
1
-
1
-
1
-
11
-
3
-
2
-
7
-
5
-
1
-
2
-
4
-
3
-
2
-
2
-
3
-
2
-
6
-
2
-
5
-
3
-
7
-
2
-
6
-
17
-
2
-
2
-
5
-
1
-
4
-
3
-
6
-
5