【问题标题】:JsonConvert unable to serialize correctly with bracketsJsonConvert 无法用括号正确序列化
【发布时间】:2020-10-28 07:41:31
【问题描述】:

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

【问题讨论】:

  • 如果您期望 [ ],请列出
  • 你希望它是"variants":[{"foo":bar"}]吗?如果是这样,请执行var productData = new { id, title, variants = new [] { new { id, title } } }; 之类的操作。括号代表一个集合(/array)。要获得它们,您需要一个集合或一个对象数组(这是new [] { } 为您提供的。

标签: c# json jsonconvert mailchimp-api-v3


【解决方案1】:

你应该这样写,

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

您也可以使用dynamicobject 作为列表类型。

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

【讨论】:

  • 谢谢大家,感谢 Jawad。这样的列表嵌套非常混乱。
猜你喜欢
  • 2012-06-15
  • 1970-01-01
  • 2018-09-25
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多