在 RestSharp 和 C# 中解析 JSON 内容时出错
Error with parsing JSON content within RestSharp & C#
我正在尝试使用 RestSharp POST 一些数据,但是我在 IRestResponse 响应中的 JSON 内容遇到错误。
错误:
"{"status":"error","message":"第 1 行第 96 列的无效输入 JSON:意外字符('e'(代码 101)):需要用逗号分隔对象条目",...}"
根据消息,我假设我在“内容”行的末尾缺少一个逗号来分隔对象,但不知道该怎么做?或者我需要将我的 name/value 对放入它们自己的对象中吗?
var client = new RestClient("https://api.com/APIKEY");
var request = new RestRequest(Method.POST);
request.AddHeader("accept", "application/json");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"properties\":{" +
"\"pipeline\":\"0\"," +
"\"content\":\"<b>Email: </b>\"" + user.Email + "\"<br/><b>Error: </b>\"" + string.Join("<br/>", type.Name.Split(',').ToList()) + "\"<br/><b>UserId: </b>\"" + user.userId + "\"<br/><b>RequestId: </b>\"" + callbackData.idReference +
"\"subject\":\"Error for\"" + user.FirstName + " " + user.LastName +
"\"owner_id\":\"001\"}}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
您永远不应该手动构建自己的 JSON!您应该使用一个(匿名)对象和一个专用的 JSON 序列化程序,例如 Json.Net.
话虽如此,RestSharp 允许您将对象指定为 AddParameter
的参数值,但您可能应该使用 AddJsonBody
作为请求正文。
您的 JSON 生成手册中存在一些错误,例如 "content"
和 "subject"
行末尾缺少引号和逗号。
var client = new RestClient("https://api.com/APIKEY");
var request = new RestRequest(Method.POST);
request.AddHeader("accept", "application/json");
request.AddHeader("content-type", "application/json");
var parameter = new
{
properties = new {
pipeline = "0",
content = $"<b>Email: </b>\"{user.Email}\"<br/><b>Error: </b>\"{string.Join("<br/>", type.Name.Split(',').ToList())}\"<br/><b>UserId: </b>\"{user.userId}\"<br/><b>RequestId: </b>\"{callbackData.idReference}",
subject = $"Error for \"{user.FirstName} {user.LastName}\"",
owner_id = "001"
}
};
request.AddJsonBody(parameter)
IRestResponse response = client.Execute(request);
这样做更不容易出错。
我正在尝试使用 RestSharp POST 一些数据,但是我在 IRestResponse 响应中的 JSON 内容遇到错误。
错误: "{"status":"error","message":"第 1 行第 96 列的无效输入 JSON:意外字符('e'(代码 101)):需要用逗号分隔对象条目",...}"
根据消息,我假设我在“内容”行的末尾缺少一个逗号来分隔对象,但不知道该怎么做?或者我需要将我的 name/value 对放入它们自己的对象中吗?
var client = new RestClient("https://api.com/APIKEY");
var request = new RestRequest(Method.POST);
request.AddHeader("accept", "application/json");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"properties\":{" +
"\"pipeline\":\"0\"," +
"\"content\":\"<b>Email: </b>\"" + user.Email + "\"<br/><b>Error: </b>\"" + string.Join("<br/>", type.Name.Split(',').ToList()) + "\"<br/><b>UserId: </b>\"" + user.userId + "\"<br/><b>RequestId: </b>\"" + callbackData.idReference +
"\"subject\":\"Error for\"" + user.FirstName + " " + user.LastName +
"\"owner_id\":\"001\"}}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
您永远不应该手动构建自己的 JSON!您应该使用一个(匿名)对象和一个专用的 JSON 序列化程序,例如 Json.Net.
话虽如此,RestSharp 允许您将对象指定为 AddParameter
的参数值,但您可能应该使用 AddJsonBody
作为请求正文。
您的 JSON 生成手册中存在一些错误,例如 "content"
和 "subject"
行末尾缺少引号和逗号。
var client = new RestClient("https://api.com/APIKEY");
var request = new RestRequest(Method.POST);
request.AddHeader("accept", "application/json");
request.AddHeader("content-type", "application/json");
var parameter = new
{
properties = new {
pipeline = "0",
content = $"<b>Email: </b>\"{user.Email}\"<br/><b>Error: </b>\"{string.Join("<br/>", type.Name.Split(',').ToList())}\"<br/><b>UserId: </b>\"{user.userId}\"<br/><b>RequestId: </b>\"{callbackData.idReference}",
subject = $"Error for \"{user.FirstName} {user.LastName}\"",
owner_id = "001"
}
};
request.AddJsonBody(parameter)
IRestResponse response = client.Execute(request);
这样做更不容易出错。