c# - JsonConvert 无法使用括号正确序列化

标签 c# json jsonconvert mailchimp-api-v3

我正在尝试将两个字段和一个包含两个字段的捆绑对象发布到 Mailchimp 的 API 端点。

            var store_id = ConfigurationManager.AppSettings["MailChimpStoreID"];
            var method = String.Format("ecommerce/stores/{0}/products?", store_id);
            var id = "id123";
            var title = "testproduct";
            //var variants = new {id, title };

            var productData = new { id, title, variants = new { id, title } };

            var requestJson = JsonConvert.SerializeObject(productData);

当我发布数据并在代码周围执行 try-catch 进行检查时,我看到我的 requestJson 返回以下内容:

    {
        "id":"id123",
        "title":"testproduct",
        "variants":{"id":"id123","title":"testproduct"}
    }

知道问题是序列化时的变体不会返回为 "variants":[{"foo":bar"}] 但我该如何解决它以便我的代码正确地将其捆绑为对象?

第二种理论:由于C#是一个强类型的面向对象程序,我是否需要使用get:sets定义上面的对象,然后将它们调用到我的函数中?

最佳答案

你应该这样写,

var productData = new { id, title, variants = new[] {new { id, title }} };
Console.WriteLine(JsonConvert.SerializeObject(productData));

//Prints:
{"id":1,"title":"sodijf","variants":[{"id":1,"title":"sodijf"}]}

您也可以使用动态对象作为列表类型。

var productData = new { id, title, variants = new List<object>() {new { id, title }} };

关于c# - JsonConvert 无法使用括号正确序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62785585/

相关文章:

c# - 从大型 OpenAPI 文档或使用 NewtonSoft 获取 JSON 模式并解析 refs

c# - 反序列化到 List<string> 字段时出现 "Unexpected character encountered while parsing value: [."异常

c# - 如何从客户端知道表是否已更新

c# - "ResolveAssemblyReference"任务失败并出现 System.BadImageFormatException,但程序集未在任何地方使用!

javascript - 为什么js中forEach不断递增?但在控制台看起来很完美。

javascript - 使用 Ajax 的地下气象 API

java - 将 Map<String,Object> 转换为 JSON 并返回 Map

.net - JsonConverter 在集成测试中不起作用

c# - 在 WPF 日历上标记特定日期

c# - Windows Media Player - 播放完毕后隐藏播放器