c# - JSON 序列化器 - 当前端缺少设置为 false 的 bool 值时

标签 c# json typescript asp.net-core

我有一个 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
});

LIVE DEMO LINK

关于c# - JSON 序列化器 - 当前端缺少设置为 false 的 bool 值时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57310279/

相关文章:

PHP - 显示 Json 编码消息

c# - MS Graph - LINQ 查询返回不正确的结果

c# - 有人可以用真正简单的语言向我解释什么是闭包吗?

javascript - JSON、JavaScript、错误的日语字符

javascript - nextProps 键虽然有内容但神秘地无法访问

typescript - Angular2 组件 View 不会通过方法更新值更改

javascript - TypeScript 中 React StatelessComponent 的 DefaultProps

reactjs - TypeError : fs. existsSync 不是函数(Electron/ReactJS/Typescript)

c# - 寻找构建 Linq 动态/条件表达式的简单方法

c# - 在 C# 中向服务器发送/接收数据