首页 > 解决方案 > ASP.NET Core Json 对象的格式很奇怪,使用 \u0022

问题描述

我打算从 ASP.NET Core 控制器做一个 JSON 响应,但这并不像我想象的那么简单。

一个简单的字符串 {"ConfigValue":"192.168.1.125:1880"}应该被序列化为一个 JsonObject 并且这个对象应该是 JSON 响应的一部分。

但是返回的 Json(str) 响应类似于

{\u0022ConfigValue\u0022:\u0022192.168.1.125:1880\u0022}

我不知道如何摆脱 \u0022

public class commonController : Microsoft.AspNetCore.Mvc.Controller
{
    private  IConfiguration config;

    public commonController(IConfiguration configuration)
    {
        config = configuration;
    }
    // GET
    [Route("getConfigEntry/{key?}")]
    public JsonResult getConfigEntry(string? key)
    {
        Dictionary<string, string> dict = new Dictionary<string, string>
        {
            {"ConfigValue", "192.168.1.125:1880"}
        };
        str = JsonConvert.SerializeObject(dict,Formatting.None); //from debugger variable viewer {"ConfigValue":"192.168.1.125:1880"}
        return Json(str); // "{\u0022ConfigValue\u0022:\u0022192.168.1.125:1880\u0022}"
    }
}

标签: c#json.net

解决方案


您将序列化为 JSON 两次 - 首先将字典序列化为字符串,然后将该字符串序列化为 JSON 值……这涉及转义引号。

你应该只序列化一次 - 你根本不需要调用JsonConvert.SerializeObject

return Json(dict);

推荐阅读