首页 > 解决方案 > JsonConvert 无法用括号正确序列化

问题描述

我正在尝试将两个字段和一个包含两个字段的捆绑对象发布到 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定义上面的对象,然后将它们调用到我的函数中?

标签: c#jsonjsonconvertmailchimp-api-v3

解决方案


你应该这样写

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"}]}

您也可以使用其中一个dynamic或一个object作为列表类型。

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

推荐阅读