如何在dotnet core中把一个动态对象序列化为JSON字符串?

问题描述 投票:2回答:1

我正在将一个JSON有效载荷传递给一个API控制器,其中一个字段是动态的,因为这个字段需要作为一个JSON字符串再次传递给另一个API。 dotnet core 3.1中间层不应该关注类型,因为有效载荷会改变。

这就是传递到API Controller中的对象。

    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; }
    }

下面是一张图片 dynamic 对象在VSCode中的样子。

enter image description here

当我使用 JsonConvert.SerializeObject(x.Action); 字符串结果没有被正确转换,而是序列化为ValueKind。"{\"ValueKind\":1}".

我想得到的是作为JSON字符串的动作对象值,它应该是这样的 "{"createRepository":{"onboarding":{"service":{"organization":"foo","repositoryName":"foo-2-service","description":"A test service."}}}}"

有没有一个简单的解决方案,可以将一个动态对象序列化?

c# json .net-core json.net dotnet-httpclient
1个回答
0
投票

试试这个

var jsonString=s.Action.ToString();

这将给你一个json字符串

© www.soinside.com 2019 - 2024. All rights reserved.