为什么需要截断JSON.parse的StringContent响应

时间:2018-07-16 05:11:12

标签: javascript json asp.net-web-api

我已经编写了WebApi筛选器来检测并发问题。在动作OnActionExecuted中,我设置响应内容如下: enter image description here

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(打印屏幕上的三行)时,只有撇号,却没有引号?

1 个答案:

答案 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

希望这会有所帮助。