c# - 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定义上面的对象,然后将它们调用到我的函数中?
解决方案
你应该这样写
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 }} };
推荐阅读
- ibm-cloud - 如何从 Watson Assistant(对话)中提取特殊信息?
- api - 如何使用参数在 Redux 上的天气 API 中获取数据?
- python - 编辑熊猫数据框所有列之间的距离
- html - amp-custom 应该放在 amp-boilerplate 之前还是之后
- java - 我可以创建多少进程和线程?
- google-cloud-platform - 如何通过 GCP 部署管理器更新机器类型属性
- docker - 我可以在不重新构建 docker 映像的情况下更改环境设置吗?
- java - 如何将我的 JSON 属性之一转换为数组?
- fpga - .关于为 RISCV 启动 Linux 内核需要考虑的事项有什么建议吗?
- python-3.x - 我无法在 Python3 中导入 Peewee