【发布时间】:2019-12-10 03:00:31
【问题描述】:
我有一个 webapi (ASP.Net Core) + 前端应用程序 (Angular)。我正在将一些存储在磁盘上的 json 文件中的数据从后端传递到前端。在前端,对于布尔属性,如果值设置为 false,我会丢失它们。使用 Newtonsoft.JSON。
假设我有以下课程:
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
但建议的解决方案对我不起作用。
【问题讨论】:
-
您使用的是什么序列化程序? JSON.Net?或者也许是 ASP.Net Json 序列化器?
-
忘记添加 - Newtonsoft.JSON
标签: c# json typescript asp.net-core