C# 如何在json.net中返回json对象而不是字符串?
我想实现自定义json.net序列化方法(空值处理、自定义ContractResolver等),但当我尝试使用JsonConvert.SerializeObject()时,我总是在输出中获取字符串,而不是格式化的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
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.SerializerSettings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
Formatting = Formatting.Indented
};
并将对象传递到返回行-序列化将自动执行
返回Json(测试)
?@UweKeim我无法执行此操作,因为我想将自定义ContractResolver添加到Json序列化方法中,这可能是Visual Studio的格式设置。通过将其打印到文件或控制台进行测试@UweKeim再次阅读了问题。“那不是他的问题。”黑手党我和邮递员一起测试过application@mkul查看Ok()。我不知道它到底是做什么的,但它逃脱了束缚。你有OK函数的来源吗?