我正在尝试使用RestSharp创建发布请求。
我有以下字符串
"{ \"name\": \"string\", \"type\": \"string\", \"parentId\": \"string\", \"Location\": [ \"string\" ]}"
我需要将其传递到json主体中以发送POST请求,我正在尝试以下操作。
public IRestResponse PostNewLocation(string Name, string Type, Nullable<Guid> ParentId, string Locatations)
{
string NewLocation = string.Format("{ \"name\": \"{0}\", \"type\": \"{1}\", \"parentId\": \"{2}\", \"Location\": [ \"{3}\" ]}", Name, Type, ParentId, Location);
var request = new RestRequest(Method.POST);
request.Resource = string.Format("/Sample/Url");
request.AddParameter("application/json", NewLocation, ParameterType.RequestBody);
IRestResponse response = Client.Execute(request);
}
错误
Message: System.FormatException : Input string was not in a correct format.
如何格式化上面的字符串以将其传递到json主体中?
我的测试在此行失败
string NewLocation = string.Format("{ \"name\": \"{0}\", \"type\": \"{1}\", \"parentId\": \"{2}\", \"Location\": [ \"{3}\" ]}", Name, Type, ParentId, Location);
答案 0 :(得分:5)
您的格式字符串中有大括号,但没有作为格式项。您可以改为使用大括号:
// With more properties of course
string newLocation = string.Format("{{ \"name\": \"{0}\" }}", Name);
...但是我强烈建议 不要这么做。相反,请使用JSON库生成JSON,例如Json.NET。使用类或匿名类型都非常简单。例如:
object tmp = new
{
name = Name,
type = Type,
parentId = ParentId,
Location = Location
};
string json = JsonConvert.SerializeObject(tmp);
那样:
答案 1 :(得分:1)
问题在于格式字符串的开头和结尾使用大括号(因为它们具有特殊含义)。像这样添加一个额外的括号来逃避它们:
string NewLocation = string.Format("{{ \"name\": \"{0}\", \"type\": \"{1}\", \"parentId\": \"{2}\", \"Location\": [ \"{3}\" ]}}", Name, Type, ParentId, Location);