问题描述
如何控制将JObject序列化为字符串?
How do I control the serialization of a JObject to string?
我有一些返回JObject的API,通常我会应用一些更改并保持或返回它们.我想避免持久保留null属性并应用一些其他格式,但是JsonConvert似乎完全忽略了我的设置.
I have some APIs that return a JObject and I usually apply some changes and persist or return them. I want to avoid persisting null properties and apply some additional formatting, but JsonConvert seems to completely ignore my settings.
这是问题的示例:
// startup.cs has the following
services.AddMvc().AddJsonOptions(o =>
{
o.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});
public class SampleController : Controller
{
JsonSerializerSettings _settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
};
[HttpPost]
[Route("object")]
public object PostObject([FromBody] SomeObject data)
{
return JsonConvert.SerializeObject(data, _settings);
}
[HttpPost]
[Route("jobject")]
public object PostJObject([FromBody] JObject data)
{
return JsonConvert.SerializeObject(data, _settings);
}
public class SomeObject
{
public string Foo { get; set; }
public string Bar { get; set; }
}
}
发布{ "Foo": "Foo", "Bar": null }
:
-
/object
返回{"Foo":"Foo"}
-
/jobject
返回{"Foo":"Foo","Bar":null}
/object
returns{"Foo":"Foo"}
/jobject
returns{"Foo":"Foo","Bar":null}
我希望JObject方法返回与使用对象相同的输出json.我如何在不创建帮助者的情况下实现这一目标?有没有办法使用相同的设置来序列化JObject?
I want the JObject method to return the same output json as if I were using an object. How do I achieve this without creating helpers? Is there a way to serialize the JObject using the same settings?
推荐答案
序列化JObject
时,将写入其原始JSON. JsonSerializerSettings
不影响其书面JSON.
When a JObject
is serialized its raw JSON is written. JsonSerializerSettings
do not effect its written JSON.
这篇关于如何使用Json.NET以与对象相同的方式序列化JObject?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!