C# 如何在json.net中返回json对象而不是字符串?

C# 如何在json.net中返回json对象而不是字符串?,c#,asp.net,asp.net-web-api,json.net,C#,Asp.net,Asp.net Web Api,Json.net,我想实现自定义json.net序列化方法(空值处理、自定义ContractResolver等),但当我尝试使用JsonConvert.SerializeObject()时,我总是在输出中获取字符串,而不是格式化的json对象。 这是我的密码: public class Card { public int Id { get; set; } public string Name { get; set; } } public class Tes

我想实现自定义json.net序列化方法(空值处理、自定义ContractResolver等),但当我尝试使用JsonConvert.SerializeObject()时,我总是在输出中获取字符串,而不是格式化的json对象。 这是我的密码:

public class Card
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    public class TestController : ApiController
    {
        [HttpGet]
        [Route("api/Test")]
        public IHttpActionResult Test()
        {
            var test = new Card()
            {
                Id = 2,
                Name = "test card"
            };

            JsonSerializerSettings settings = new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore,
                Formatting = Formatting.Indented
            };
            var result = JsonConvert.SerializeObject(test, settings);

            return Ok(result);
        }
    }
它回来了
“{\r\n\“Id\”:2\r\n\“Name\”:“test card\”\r\n}”

当我在api控制器中返回对象(
返回Ok(test);
)时,我将得到正确格式的json

{
  "Id": 2,
  "Name": "test card"
}

如何在api控制器中通过序列化的自定义实现返回json对象?

这是配置问题。要将自定义序列化程序选项附加到全局web api配置,只需更改WebApiConfig,如下所示:

config.Formatters.JsonFormatter.S‌​erializerSettings = new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore,
                Formatting = Formatting.Indented
            };

并将对象传递到返回行-序列化将自动执行

返回Json(测试)
?@UweKeim我无法执行此操作,因为我想将自定义ContractResolver添加到Json序列化方法中,这可能是Visual Studio的格式设置。通过将其打印到文件或控制台进行测试@UweKeim再次阅读了问题。“那不是他的问题。”黑手党我和邮递员一起测试过application@mkul查看Ok()。我不知道它到底是做什么的,但它逃脱了束缚。你有OK函数的来源吗?