gpt4 book ai didi

c# - 如何删除 JSON 字符串中的开始和结束双引号以及所有反斜杠 - C#

转载 作者:行者123 更新时间:2023-11-30 21:49:10 26 4
gpt4 key购买 nike

为了使用 C# 执行 REST API 调用,我必须使用参数序列化字典。这些参数必须以 JSON 形式放置在请求正文中。

API调用是在RestSharp的帮助下完成的。并且使用 fiddler 检查发送字符串。

request.AddBody(_jsonrequeststring);

问题是 API 非常挑剔,它不接受断点(反斜杠),也不接受 JSON 字符串开头和结尾的双引号。

所以这是它的期望:

{
"ConsumerToken":"aconsumertoken",
"UserId":"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dbbeb6bab2b79bacbeb9f5b8b4b6" rel="noreferrer noopener nofollow">[email protected]</a>",
"PasswordSha256Base64":"apassword"
}

这就是我要发送的内容:

"{ConsumerToken:\"aconsumertoken\",UserId:\"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a2c7cfc3cbcee2d5c7c08cc1cdcf" rel="noreferrer noopener nofollow">[email protected]</a>\",PasswordSha256Base64:\"apassword\"}"

我可以删除\",但是当它发送该字符串时,它也会返回错误。

"{ConsumerToken:aconsumertoken,UserId:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="07626a666e6b477062652964686a" rel="noreferrer noopener nofollow">[email protected]</a>,PasswordSha256Base64:apassword}"

是否可以只删除\以及左右双引号?如果是的话怎么办?我似乎无法理解它。

完整的调用:

用户处理程序.cs

public static object Login(string uname, string pass, string conTok)
{
Dictionary<string, string> loginDictionary =
new Dictionary<string, string>();
loginDictionary.Add("ConsumerToken", conTok);
loginDictionary.Add("UserId", uname);
loginDictionary.Add("PasswordSha256Base64", pass);
string jsonRequestString = JsonConvert.SerializeObject(loginDictionary);

Proxy proxy = new Proxy(jsonRequestString);
return proxy.Execute();
}

Proxy.cs

public class Proxy
{
const string BaseUrl = "API url";
const string ActionUrl = "API action url";

string _jsonrequeststring;

public Proxy(string json)
{
_jsonrequeststring = json;
}

public Object Execute()
{
var client = new RestClient(BaseUrl);
var request = new RestRequest(ActionUrl);

request.RequestFormat = DataFormat.Json;
request.AddBody(_jsonrequeststring);

request.Method = Method.POST;
var response = client.Execute(request);

var content = response.Content;

return content;
}
}

最佳答案

看起来您正在将正文内容添加为字符串,这意味着它会被 RestSharp 编码为字符串。如果可能,尝试添加对象本身并让 RestSharp 处理序列化等:

var obj = new {
ConsumerToken = "aconsumertoken",
UserId = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="791c14181015390e1c1b571a1614" rel="noreferrer noopener nofollow">[email protected]</a>",
PasswordSha256Base64 = "apassword"
};
request.AddBody(obj);

如果由于某种原因必须使用预序列化的 JSON 字符串,您应该可以这样做:

request.AddParameter("application/json", _jsonrequeststring, ParameterType.RequestBody);

[注意:我还没有实际测试过这些建议,但我认为它们应该可以解决问题]

关于c# - 如何删除 JSON 字符串中的开始和结束双引号以及所有反斜杠 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37158346/

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