将字典序列化为 json
Serialize dictionary to json
我有什么方法:
IExternalResponse<ReserveResponse> ReserveFreePlacement(IDictionary<int,int> ticketsInfo) {
var request = new RestRequest("", Method.POST);
request.AddJsonBody(
new
{
command = "RESERVATION",
categoryQuantityMap = JsonConvert.SerializeObject(ticketsInfo),
});
return GetResult<ReserveResponse>(request, RestClient, "Reservation"); }
请求是 RestSharp.RestRequest
,ticketsInfo 是具有值的字典:
Key:12041, Value:1
Key:12040, Value:2
在命令 "AddJsonBody" 之后,我在 request.Parameters 中有 1 个参数
application/json={
"command": "RESERVATION",
"categoryQuantityMap": "{\"12041\":1,\"12040\":1}",
"versionCode": "1.0"
}
但我需要
application/json={
"command": "RESERVATION",
"categoryQuantityMap": {
"12041":1,
"12040":2
},
"versionCode": "1.0"
}
如何找到合适的?
所以,AddJsonBody方法序列化实现的问题。当我通过处理序列化对象然后通过处理添加正文请求时 - 一切都是正确的:
IExternalResponse<ReserveResponse> ReserveFreePlacement(IDictionary<int,int> ticketsInfo)
{
var jsonBody = JsonConvert.SerializeObject( new
{
command = "RESERVATION",
categoryQuantityMap = ticketsInfo,
versionCode = "1.0"
});
var request = new RestRequest("", Method.POST);
request.AddParameter("application/json", jsonBody, ParameterType.RequestBody);
return GetResult<ReserveResponse>(request, RestClient, "Reservation");
}
我有什么方法:
IExternalResponse<ReserveResponse> ReserveFreePlacement(IDictionary<int,int> ticketsInfo) {
var request = new RestRequest("", Method.POST);
request.AddJsonBody(
new
{
command = "RESERVATION",
categoryQuantityMap = JsonConvert.SerializeObject(ticketsInfo),
});
return GetResult<ReserveResponse>(request, RestClient, "Reservation"); }
请求是 RestSharp.RestRequest
,ticketsInfo 是具有值的字典:
Key:12041, Value:1
Key:12040, Value:2
在命令 "AddJsonBody" 之后,我在 request.Parameters 中有 1 个参数
application/json={
"command": "RESERVATION",
"categoryQuantityMap": "{\"12041\":1,\"12040\":1}",
"versionCode": "1.0"
}
但我需要
application/json={
"command": "RESERVATION",
"categoryQuantityMap": {
"12041":1,
"12040":2
},
"versionCode": "1.0"
}
如何找到合适的?
所以,AddJsonBody方法序列化实现的问题。当我通过处理序列化对象然后通过处理添加正文请求时 - 一切都是正确的:
IExternalResponse<ReserveResponse> ReserveFreePlacement(IDictionary<int,int> ticketsInfo)
{
var jsonBody = JsonConvert.SerializeObject( new
{
command = "RESERVATION",
categoryQuantityMap = ticketsInfo,
versionCode = "1.0"
});
var request = new RestRequest("", Method.POST);
request.AddParameter("application/json", jsonBody, ParameterType.RequestBody);
return GetResult<ReserveResponse>(request, RestClient, "Reservation");
}