我需要传递一个JSON对象数组,下面是一个在JSON中应该是什么样子的示例:
"categories": [
{
"id": 9
},
{
"id": 14
}
],
我不知道如何自己完成它,我尝试使用 Restsharp 的 request.AddBody()
和 request.AddParameter()
但它没有让我去任何地方=/
var request = new RestRequest();
request.AddParameter("name", name);
// Category
request.AddParameter("categories", "categories here");
var response = client.Post(request);
这应该有效:
request.RequestFormat = DataFormat.Json; // Important
var input = new Dictionary<string, object>();
// cats can be an array on real objects too
var cats = new[] {new {id = 9}, new {id = 14}};
input.Add("categories", cats);
request.AddBody(input);
创建一个类并为其指定任何名称
class MyObject
{
private int id;
public MyObject(int id)
{
this.id = id;
}
}
将类定义为对象
MyObject obj = new MyObject(9);
现在使用 Newtonsoft.Json 序列化您的对象
string result = JsonConvert.SerializeObject(obj);
现在将其添加到数组中
var resArray = new object[] { result };
在下面找到完整的代码
class MyObject
{
private int id;
public MyObject(int id)
{
this.id = id;
}
}
using Newtonsoft.Json;
using RestSharp;
class Main
{
MyObject obj = new MyObject(9);
MyObject obj1 = new MyObject(14);
string result = JsonConvert.SerializeObject(obj);
string result1 = JsonConvert.SerializeObject(obj1);
var resArray = new object[] { result ,result1};
ServicePointManager.SecurityProtocol |= SecurityProtocolType.Ssl3 |
SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 |
SecurityProtocolType.Tls;
var client = new RestClient("http://127.0.0.1:8080");
var request = new RestRequest("category", Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddJsonBody(new
{
categories = resArray,
}) ;
var response = client.Execute(request);
MessageBox.Show(response.IsSuccessful.ToString());
MessageBox.Show(response.Content);
}
如果我理解正确,您想发布一个 JSON 数组。如果您不想手动形成 JSON 字符串,最简单的方法是使用 Newtonsoft.Json
下面是一个示例:
List<int> data = new List<int>() // This is your array
string JsonData = JsonConvert.SerializeObject(data);
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
StringContent content = new StringContent(JsonData, Encoding.UTF8, "application/json");
HttpResponseMessage result = await client.PostAsync("your adress", content);
这是向服务器发出 POST 请求的简单方法。
要阅读响应,您可以使用:
string answer = await result.Content.ReadAsStringAsync();