gpt4 book ai didi

c# - 中继 JSON 已转义双引号

转载 作者:行者123 更新时间:2023-12-03 00:50:17 26 4
gpt4 key购买 nike

我在 VS 中创建了一个非常简单的 C# Azure 函数,在本地运行,为了简单起见,它包装了对第三方 REST API 的调用(充当代理,但不是 Azure 函数代理 )。该函数在验证提供的参数后执行的所有操作是调用第 3 方 REST API,并在调用成功时直接返回结果(JSON 响应)。

HttpResponseMessage response = await _httpClient.PostAsync( requestUri, content );

if ( response.IsSuccessStatusCode )
{
var jsonResponseBody = await response.Content.ReadAsStringAsync();
return req.CreateResponse( HttpStatusCode.OK, jsonResponseBody, "application/json" );
}

我在 Postman 中调用 Azure 函数得到的 JSON 类似于以下内容(内部双引号是字符串转义的):

"{\"Id\":\"0\",\"FirstName\":\"firstname\",\"LastName\":\"lastname\"}"

什么可能导致发生这种转义以及如何消除它?

最佳答案

CreateResponse 会将您提供给它的任何内容序列化为 JSON(或 XML,如果您要求的话)。如果您给它字符串,它会将此字符串包装到额外的 "" 中,使其成为有效的 JSON(或在 XML 标记中),就像在所有 HelloWorld 示例中一样。所以

req.CreateResponse(HttpStatusCode.OK, "Hello " + name)

返回 HTTP 响应 “Hello User”,因为 Hello User 不是有效的 JSON。该函数并不关心您的字符串是否已经是有效的 JSON。

要按原样返回字符串内容,您需要明确要求:

var response = req.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(jsonResponseBody, Encoding.UTF8, "application/json");
return response;

关于c# - 中继 JSON 已转义双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48424631/

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