gpt4 book ai didi

c# - 格式化 json 字符串并将其传递给带有参数的正文会出错

转载 作者:太空宇宙 更新时间:2023-11-03 18:52:31 24 4
gpt4 key购买 nike

我正在尝试使用 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);

最佳答案

您的格式字符串中有左大括号,但它们不是格式项。您可以改用双括号:

// With more properties of course
string newLocation = string.Format("{{ \"name\": \"{0}\" }}", Name);

...但我强烈建议您不要这样做。相反,使用 JSON 库生成 JSON,例如杰森.NET。很简单,要么使用类,要么使用匿名类型。例如:

object tmp = new
{
name = Name,
type = Type,
parentId = ParentId,
Location = Location
};
string json = JsonConvert.SerializeObject(tmp);

那样:

  • 您无需担心您的姓名、类型等是否包含需要转义的字符
  • 您无需担心格式字符串
  • 您的代码更易于阅读

关于c# - 格式化 json 字符串并将其传递给带有参数的正文会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53883521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com