如何在 RestSharp 中发布对象的 JSON 数组



我需要传递一个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();

最新更新