我已经编写了WebApi筛选器来检测并发问题。在动作OnActionExecuted中,我设置响应内容如下:
actionExecutedContext.Response.Content = new System.Net.Http.StringContent( "'{ \"hasValidationErrors\": true, \"validationErrors\": " + System.Web.Helpers.Json.Encode( validationErrors ) + ", \"concurrencyIssue\": true }'", System.Text.Encoding.UTF8, "application/string" );
当我收到并写到控制台时,它看起来像在打印屏幕下方
然后,当我尝试这样做时:
JSON.parse(response.data)
我收到错误消息:
SyntaxError: Unexpected token ' in JSON at position 0
但是当我这样做
JSON.parse( response.data.substring(1, response.data.length - 1) )
它按预期工作,意味着将字符串转换为json数据。
所以我的问题是,为什么我必须截断response.data?
我猜想,正如在打印屏幕的第一行中可以看到的那样,还有其他引号。但是,如何创建服务器响应以不将其放置在此处?为什么在登录response.data
(打印屏幕上的三行)时,只有撇号,却没有引号?
答案 0 :(得分:1)
这意味着您的JSON无效。尝试为您的响应创建一个模型类。然后解析。
示例:
public class Response
{
public bool hasValidationErrors;
//public YourType validationErrors;
public bool concurrencyIssue;
}
var obj = new Response();
obj.hasValidationErrors = true;
obj.concurrencyIssue = true;
var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
//Set Your Response
希望这会有所帮助。