gpt4 book ai didi

javascript - 为什么需要 chop JSON.parse 的 StringContent 响应

转载 作者:行者123 更新时间:2023-12-03 01:29:49 24 4
gpt4 key购买 nike

我编写了 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 数据。

所以我的问题是,为什么我必须 chop response.data?我猜想,正如打印屏幕上的第一行所示,还有额外的引号。但是我怎样才能创建我的服务器响应而不把它们放在那里呢?为什么当我记录response.data(打印屏幕上的第三行)时,只有撇号,但没有引号?

最佳答案

这意味着您的 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

希望这有帮助。

关于javascript - 为什么需要 chop JSON.parse 的 StringContent 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51354934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com