JSON响应在开始时返回一个空字符
我刚开始测试的API的建立一个框架,我使用specflow用C#和VS.我能够发送请求和接收一个JSON响应,但是当我试图Deserialise我得到一个错误的response.Content。我认为这是因为response.Content字符串具有正斜杠,如下所示。我试图在反序列化之前删除它们,但它不会将其删除,因为我可以在调试模式下看到它。JSON响应在开始时返回一个空字符
错误我得到的是:类型的异常“Newtonsoft.Json.JsonReaderException”发生在Newtonsoft.Json.dll但在用户代码中没有处理
附加信息:分析值意外字符遇到。路径 '',第0行,位置0
respJson - “{” 结果 “:{” isLinked “:真” saleDateTime “:” 16/06/2017 14时20" 分二十零秒, “STORENAME” : “UAT1布莱顿LOC 4”}, “状态”:{ “操作类型”:0, “IsSuccess”:真实的, “ActionString”: “”}}”
方法 - 公共静态动态receiptRetrieve(字符串URI,方法的方法,串 inputJsonFileName,字典inputParams = NULL){
object temp = GetJsonInput(inputJsonFileName, inputParams);
var response = RestFeedPlugin.SendRequestToEReceiptsAPI(uri, method, null, temp);
string respJson = response.Content.Replace(@"\", @"");
dynamic jsonObject = JsonConvert.DeserializeObject(respJson);
return jsonObject;
}
我觉得问题是什么。我从RestSharp获得的json响应是在开始时添加一个空格,导致它中断。如果我从response.content中删除第一个字符,它似乎正在工作。然而,这不是一个理想的解决方案,我仍然愿意就这是为什么在第一个地方发生的事情的想法? 临时解决我的问题 -
var response = client.Execute(request);
response.Content = response.Content.Remove(0, 1);
client.BuildUri(request);
这些反斜线逃避里面的文字撇号。他们打算在那里。你的程序正常工作而不删除他们:
using System;
using Newtonsoft.Json;
public class Program
{
public static void Main()
{
string json = "{\"Result\":{\"isLinked\":true,\"saleDateTime\":\"16/06/2017 14:20:20\",\"storeName\":\"UAT1 BRIGHTON LOC 4\"},\"Status\":{\"ActionType\":0,\"IsSuccess\":true,\"ActionString\":\"\"}}";
dynamic jsonObject = JsonConvert.DeserializeObject(json);
Console.WriteLine(jsonObject);
}
}
你可以看到它在这里的行动:https://dotnetfiddle.net/rJwaJM
我想你需要的是在这里:https://stackoverflow.com/a/13866117/1699071 – SAm
DO因为它使包括作为一个字符串的双引号,我们宣布字符串为“字符串”,因此它会自动使双引号可能的,这就是所谓的转义字符串不能代替反斜线。问题在于你如何反序列化你的Json。为什么你首先有动态类型? – Aizen
其实我觉得问题是什么。 JSON的responseI'm从RestSharp越来越被添加在导致它打破了开始的空间。如果我从response.content中删除第一个字符,它似乎正在工作。然而,这不是一个理想的解决方案,我仍然愿意就这是为什么在第一个地方发生的事情的想法? – Fishyish