如何在JSON字符串中删除打开和关闭双引号和所有反斜杠 - C#

时间:2016-05-11 09:26:21

标签: c# .net json restsharp

要使用C#执行rest API调用,我必须使用参数序列化字典。这些参数必须作为JSON放在请求体内。

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

_

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

所以这就是它所期待的:

request.AddBody(_jsonrequeststring);

这就是我发送的内容:

{
    "ConsumerToken":"aconsumertoken",
    "UserId":"email@web.com",
    "PasswordSha256Base64":"apassword"
}

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

"{ConsumerToken:\"aconsumertoken\",UserId:\"email@web.com\",PasswordSha256Base64:\"apassword\"}"

甚至可以删除\并打开和关闭双引号?如果是这样怎么样?我似乎无法绕过它。

完整的电话:

userhandler.cs

"{ConsumerToken:aconsumertoken,UserId:email@web.com,PasswordSha256Base64:apassword}"

Proxy.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();
}

1 个答案:

答案 0 :(得分:3)

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

var obj = new {
                  ConsumerToken = "aconsumertoken",
                  UserId = "email@web.com",
                  PasswordSha256Base64 = "apassword"
              };
request.AddBody(obj);

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

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

[注意:我实际上没有测试过这些建议,但我认为他们应该这样做]