我使用的API令人沮丧地要求您省略可选参数,而不是将其作为null
传递。
此外,数据略有嵌套格式:
{ data: { prop1: 5, prop2: 6, prop3: 7 } }
以前我使用替换来转换它:
"{ data: { prop1: {prop1}, prop2: {prop2}, prop3: {prop3} } }"
.Replace("{prop1}", prop1)....
但事实证明,如果没有提供值,我发送给它的API只会接受它,如果它没有包含在JSON中。
我没有乱用复杂的字符串连接(因为我没有使用模型绑定),而是考虑简单地创建一个字典并将其序列化为JSON。
如果我这样做:
Dictionary<string, int> props = new Dictionary<string, int>
{
{ "prop1", 6 },
{ "prop3", 7 },
};
string json = JsonConvert.SerializeObject(props, Formatting.Indented);
我可以很好地序列化我需要的任何道具。不幸的是,您可以看到我需要发送数据的方式包含在json的data
属性中。我需要在我的字典中放一个字典,但字典被定义为字符串,int这是不可能的。如果我更改了类型,那么我就无法将道具放入其中。
要解决这个问题,我可以看到两种可能的清洁方式:
例如。 new JsonObject().AddNode("data").AddProperty("Prop1", 3).AddProperty("Prop3", 5)....
等。
我还没有办法干净利落地做到这一点 - 或者另外一个解决这个问题的建议将不胜感激。
答案 0 :(得分:1)
不确定字典方法的问题是什么。这很好用:
{{1}}