我想实现自定义json.net serialize方法(空值处理,自定义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"
}
如何使用serialize的自定义实现返回api控制器中的json对象?
答案 0 :(得分:0)
这是配置问题。要将自定义序列化程序选项附加到全局Web API配置,只需按以下步骤更改WebApiConfig:
config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
Formatting = Formatting.Indented
};
将对象传递给返回行 - 序列化将自动完成