如何使用 RestSharp 发送具有动态属性的 JSON?
How to send JSON with dynamic properties using RestSharp?
我想创建一个 JSON 对象,它有一个动态 属性 来向外部 API 发送请求。
示例:
{
"prop1": "val1",
"prop2": "val2",
"prop3": {
"dynamic_prop": "val"
}
}
这是唯一能让我得到有效回复的代码:
var request = new RestRequest(url, Method.PUT);
request.AddHeader("content-type", "application/json");
var body = new
{
prop1 = "val1",
prop2 = "val2",
prop3 = new { dynamic_prop = "val" }
};
request.AddJsonBody(body);
但是,在这种情况下 dynamic_prop
不是动态的。正如我所读的那样,匿名类型不能有动态道具。
我尝试使用 JObject
:
var jobject = JObject.Parse("{\"dynamic_prop\":\"val\"}");
var body = new
{
prop1 = "val1",
prop2 = "val2",
prop3 = jobject
};
但是 JObject
没有正确序列化,我得到 [[[]]]
,我猜是因为该对象有许多其他属性(首先,ChildrenTokens 等),[=18 也是如此=].我也尝试过 ExpandoObject
但无法正常工作。
JObject
被序列化为 [[[]]]
因为 RestSharp 的序列化程序将其视为 IEnumerable
而不是字典。
但是这里不需要使用JObject
;只需使用 Dictionary<string, string>
创建动态 属性:
var dict = new Dictionary<string, string>();
dict.Add("dynamic_prop", "val");
var body = new
{
prop1 = "val1",
prop2 = "val2",
prop3 = dict
};
我想创建一个 JSON 对象,它有一个动态 属性 来向外部 API 发送请求。 示例:
{
"prop1": "val1",
"prop2": "val2",
"prop3": {
"dynamic_prop": "val"
}
}
这是唯一能让我得到有效回复的代码:
var request = new RestRequest(url, Method.PUT);
request.AddHeader("content-type", "application/json");
var body = new
{
prop1 = "val1",
prop2 = "val2",
prop3 = new { dynamic_prop = "val" }
};
request.AddJsonBody(body);
但是,在这种情况下 dynamic_prop
不是动态的。正如我所读的那样,匿名类型不能有动态道具。
我尝试使用 JObject
:
var jobject = JObject.Parse("{\"dynamic_prop\":\"val\"}");
var body = new
{
prop1 = "val1",
prop2 = "val2",
prop3 = jobject
};
但是 JObject
没有正确序列化,我得到 [[[]]]
,我猜是因为该对象有许多其他属性(首先,ChildrenTokens 等),[=18 也是如此=].我也尝试过 ExpandoObject
但无法正常工作。
JObject
被序列化为 [[[]]]
因为 RestSharp 的序列化程序将其视为 IEnumerable
而不是字典。
但是这里不需要使用JObject
;只需使用 Dictionary<string, string>
创建动态 属性:
var dict = new Dictionary<string, string>();
dict.Add("dynamic_prop", "val");
var body = new
{
prop1 = "val1",
prop2 = "val2",
prop3 = dict
};