【发布时间】:2017-04-24 09:24:54
【问题描述】:
我想实现自定义 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 控制器中返回对象 (return Ok(test);) 时,我会得到正确格式的 json
{
"Id": 2,
"Name": "test card"
}
如何在 api 控制器中通过序列化的自定义实现返回 json 对象?
【问题讨论】:
-
return Json(test)? -
@UweKeim 我不能这样做,因为我想将自定义 ContractResolver 添加到 json Serialize 方法
-
大概是Visual Studio的格式。通过将其打印到文件或控制台来测试它。 @UweKeim 再次阅读了这个问题。那不是他的问题。
-
@Mafii 我用 Postman 应用测试过
-
@mkul 查看 Ok()。我不知道它到底做了什么,但它转义了字符串。你有OK函数的源码吗?
标签: c# asp.net asp.net-web-api json.net