我刚刚开始设置测试API的框架,并且我使用specflow与C#和VS.我能够发送请求并收到JSON响应,但是当我尝试反序列化响应时。内容我收到错误。我认为这是因为response.Content字符串中包含正斜杠,如下所示。我尝试在反序列化之前删除它们,但它不会删除它,因为我可以在调试模式下看到它。
我得到的错误是:类型' Newtonsoft.Json.JsonReaderException'发生在Newtonsoft.Json.dll但未在用户代码中处理
附加信息:解析值时遇到意外的字符:。路径'',第0行,第0位。
respJson - " {"结果":{" isLinked":true," saleDateTime":" 16/06/2017 14:20:20&# 34;," storeName":" UAT1 BRIGHTON LOC 4"},"状态":{" ActionType":0," IsSuccess":真," ActionString":""}}"
方法 - public static dynamic receiptRetrieve(string uri,Method method,string inputJsonFileName,Dictionary 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);
答案 0 :(得分:0)
那些反斜杠正在逃避文本中的撇号。他们应该在那里。您的程序可以正常工作而无需删除它们:
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