我正在研究这个需要序列化JSON对象以使用RestSharp发布参数的项目,下面是我的代码:
var request = new RestRequest();
request.Method = Method.POST;
request.RequestFormat = DataFormat.Json;
request.AddBody(jsonObject);
return client.Execute<dynamic>(request);
我意识到不是将每个JSON名称值对添加为post参数,request.AddBody
将整个JSON字符串添加为一个大的post参数。我的问题是,有没有办法让request.AddBody
方法将每个JSON名称 - 值对添加为单独的帖子参数?我知道request.AddParameter()
完成了这项工作,但这需要手动添加每个参数。
而不是:
[0]:{
application/json="
{
"name":"john doe",
"age": "12",
"gender": "male"}
}
}
期望的结果:
[0]:"name":"john doe"
[1]:"age":"12"
[2]:"gender":"male"
答案 0 :(得分:5)
答案 1 :(得分:1)
答案似乎是遍历您的jsonObject
并将每个所需的JSON名称 - 值对转换为参数。要执行此操作,您可以在循环中使用request.AddParameter
方法,该循环使用以下内容迭代jsonObject
的名称 - 值对:
foreach (var pair in jsonObject)
{
request.AddParameter(pair.Key, pair.Value);
}
这可能过于简单,但使用像JSON.NET这样的库,应该很容易做到。然后你可以将这个功能包装到一个漂亮的小方法中并随意重用。没有体力劳动。
注意:您可能希望删除现有代码中的行request.RequestFormat = DataFormat.Json
,因为JSON正是您似乎不希望POST的行。
答案 2 :(得分:1)
有一个类似的问题,发现了这个帖子。提出了一个简单的方法,我想我会分享,以防它人帮助。
诀窍是使用匿名对象和AddJsonBody()。
request.AddJsonBody(new { name = "john doe", age = "12", gender = "male" });
RestSharp会自动将匿名对象序列化为所需的JSON ...
{
"name":"john doe",
"age": "12",
"gender": "male"
}