【问题标题】:.Net Core 2.0 API returning json with quotes around property name.Net Core 2.0 API 返回带有属性名称引号的 json
【发布时间】:2017-08-15 13:25:56
【问题描述】:

我有一个刚刚从 1.1 更新到 2.0 的 .Net Core 应用程序。 我遇到的问题是返回的 json。 json 包含一个 JavaScript Web 令牌 (JWT)。

我的控制器端点看起来像这样......

    [Microsoft.AspNetCore.Mvc.Route("getToken")]
    [Microsoft.AspNetCore.Authorization.AllowAnonymous]
    public IActionResult Post([Microsoft.AspNetCore.Mvc.FromBody] ApplicationUser applicationUser)
    {
            var authTokenJson =  _authTokenService.GetTokenJson(_jwtOptions, applicationUser);
            return Ok(authTokenJson.Result);
    }

在 1.1 版本下,来自该端点的响应在浏览器控制台中打印时如下所示...

升级到 2.0 后,它现在看起来像这样......

请注意,属性名称现在用引号引起来。这会导致尝试处理对象的前端 AngularJS 应用程序出现问题。

有谁知道为什么会发生这种情况以及如何解决它?

【问题讨论】:

  • ".Net Core 2.0 API 返回带有引号的 json" 好!那是有效的JSON。请注意,您在第一个屏幕截图中看到的不是 JSON,而是一个已解析的对象。您的第二个屏幕截图可能是 JSON(在字符串中),但很难从中分辨出来。所以这就是你需要弄清楚的:为什么它不再被解析了?

标签: .net json asp.net-web-api asp.net-core-2.0


【解决方案1】:

感谢您的 cmets。

我发现使用 1.1 格式,我可以在前端做到这一点......

this.currentToken = <string>response.json().access_token;

但是对于新格式,我现在必须像这样添加一个 .parse 调用...

this.currentToken = <string> JSON.parse(response.json()).access_token; 

现在可以正常工作了。

【讨论】:

    【解决方案2】:

    asp.core.net 1.1

        [HttpPost]
        public async Task<IActionResult> PostAsync([FromBody]GraphQLQuery query)
        {
           ...
            var json = _writer.Write(result);
            var rr = new ObjectResult(json) { StatusCode = (int)httpResult };
            return rr;
        }
    

    asp.core.net 2.0

        [HttpPost]
        public async Task<IActionResult> PostAsync([FromBody]GraphQLQuery query)
        {
           ...
            var json = _writer.Write(result);
            dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json);
            var rr = new ObjectResult(obj) { StatusCode = (int)httpResult };
            return rr;
        }
    

    这两个函数在各自的平台上都返回了相同的结果。 1.1 版本可能将 json 字符串解释为必须转换为动态的 json,而在 2.0 中它只是一个字符串。

    【讨论】:

      猜你喜欢
      • 2019-08-28
      • 2021-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 2022-01-01
      • 2021-02-02
      相关资源
      最近更新 更多