为什么rest是表单名称/值对而不是JSON?

为什么rest是表单名称/值对而不是JSON?,rest,restsharp,Rest,Restsharp,当我有以下行时,为什么RestSharp会发布表单名称/值对而不是JSON:`request.RequestFormat=DataFormat.JSON var request = new RestRequest($"api/Users/{userId}/UpdateProperty", Method.PUT); request.RequestFormat = DataFormat.Json; request.AddObject(new { key = key, value = value })

当我有以下行时,为什么RestSharp会发布表单名称/值对而不是JSON:`request.RequestFormat=DataFormat.JSON

var request = new RestRequest($"api/Users/{userId}/UpdateProperty", Method.PUT);
request.RequestFormat = DataFormat.Json;
request.AddObject(new { key = key, value = value });
Execute(request);
这将导致以下http请求(使用Fiddler检查):

我希望尸体是JSON:

{
关键:“性别”,
价值观:“女性”
}


我做错了什么?

您希望使用AddJsonBody方法而不是AddObject方法。您可能还希望添加带有“application/json”值的“contenttype”头

基本上是这样的:

var request = new RestRequest($"api/Users/{userId}/UpdateProperty", Method.PUT);
request.AddHeader("Content-type", "application/json");
request.RequestFormat = DataFormat.Json;
request.AddJsonBody(new { key = key, value = value });
Execute(request);

您希望使用AddJsonBody方法,而不是AddObject方法。您可能还希望添加带有“application/json”值的“contenttype”头

基本上是这样的:

var request = new RestRequest($"api/Users/{userId}/UpdateProperty", Method.PUT);
request.AddHeader("Content-type", "application/json");
request.RequestFormat = DataFormat.Json;
request.AddJsonBody(new { key = key, value = value });
Execute(request);