我有一个 webapi (ASP.Net Core) + 前端应用程序 (Angular)。我将一些存储在磁盘上的 json 文件中的数据从后端传递到前端。在前端,对于 bool 属性,如果值设置为 false,我就会丢失它们。使用 Newtonsoft.JSON。
假设我有以下类(class):
public class Element<T>
{
public Element(T value, T defaultValue, string name)
{
Value = value;
DefaultValue = defaultValue;
TypeName = name
}
public T Value { get; set; }
public T DefaultValue { get; set; }
public string TypeName { get; set;}
}
对象创建:
public class Setting
{
public Element<bool> SomeBoolObject { get; set; } = new Element<bool>(false, false, "boolean");
}
磁盘上的 JSON 文件:
"SomeBoolObject": {
"value": false,
"defaultvalue": false,
"typename": "boolean"
}
然后在前端我只有
{
"SomeBoolObject": {
"typeName": "Boolean"
}
}
对象中缺少 Value 和 DefaultValue 键,但仅当 value 设置为 false 时才会出现。当我将其设置为 true 时,我在前端获得了所有键和值:
"SomeBoolObject": {
"value": true,
"defaultvalue": true,
"typename": "boolean"
}
在前端:
{
"SomeBoolObject": {
"value": 1,
"defaultValue": 1,
"typeName": "Boolean"
}
}
这种行为的原因可能是什么?我需要编写一些自定义序列化程序来处理“假”值吗?
这有点类似于 Json.net DefaultValueHandling exempting boolean alone
但是建议的解决方案对我不起作用。
最佳答案
解决方案:
var serializedJson = JsonConvert.SerializeObject (SomeBoolObject, new JsonSerializerSettings {
DefaultValueHandling = DefaultValueHandling.Include
});
关于c# - JSON 序列化器 - 当前端缺少设置为 false 的 bool 值时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57310279/