如何在json.net?

时间:2017-04-24 09:24:55

标签: c# asp.net asp.net-web-api json.net

我想实现自定义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对象?

1 个答案:

答案 0 :(得分:0)

这是配置问题。要将自定义序列化程序选项附加到全局Web API配置,只需按以下步骤更改WebApiConfig:

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

将对象传递给返回行 - 序列化将自动完成