当前位置: 首页 > 知识库问答 >
问题:

如果未在API调用[重复]中传递属性,请将bool属性默认值设置为true

屈晨
2023-03-14

我正在使用带有json body的url https://myWebsite.com/users进行PUT调用以更新用户

[{
"Name" : "John",
}]

由于我没有在json body中传递“状态”属性,因此默认情况下将其设置为false,因为false是布尔数据类型的默认值。

但是,如果在进行API调用时未在json中传递属性,我需要将其设置为true作为默认值。

我尝试使用OnDeserializing属性,如下所示:

   [OnDeserializing]
    void BeforeDeserialization(StreamingContext ctx)
    {
        this.Status = true;
    }

但它不起作用。

模型如下所示:

[DataContract (Namespace = "mynamespace")]
public class User
{
    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public bool Status { get; set; }
}

请帮我解决这个问题。

共有3个答案

黄向明
2023-03-14

您可以将默认值分配给布尔属性status,例如,

[DataContract (Namespace = "mynamespace")]
public class User
{
    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public bool Status { get; set; } = true; 
                                    //^^^^^^^^ Set default value to Status property
}

这样,即使您传递了状态属性的值,默认值也将替换为实际值,否则会将状态属性的值设置为真。

麻超
2023-03-14

让我们尝试使用DefaultValueAttribute

孔波
2023-03-14

如果您反序列化为一个类,那么在该类中有一个默认为真值的bool成员。例如:

public class NameAndStatus
{
    public string name { get; set;}
    public bool status { get; set; } = true;  // default value of true
}

如果status与json正文一起传入,则成员将设置为传入的值。否则您将获得默认值,即true

 类似资料:
  • 问题内容: 是否可以使用默认值覆盖display属性?例如,如果我以一种样式将其设置为none,而我想以其默认值以其他方式覆盖它。 还是找出该元素的默认值然后将其设置为默认值的唯一方法?不想知道元素通常是block,inline还是任何一个… 问题答案: 浏览器的默认样式在其用户代理样式表中定义,您可以在此处找到其来源。不幸的是,级联和继承级别3规范似乎并未提出一种将样式属性重置为其浏览器默认值的

  • 我在spring-boot项目中有一个properties类。 现在,我想将的application.properties文件中的其他属性设置默认值。与下面的示例使用@value所做的类似

  • 在使用Jackson反序列化Json时,当Json文件中缺少属性时,是否有方法指定默认值

  • 问题内容: 在php生成的页面上,有几个像这样的元素: 因此,有一个默认样式,我将应用一些额外的样式来覆盖CSS中定义的样式。 有没有办法从javascript中删除这些添加的样式?看来obj.style.color =“ default”和obj.style.color =“ auto”无效。如何从javascript将颜色重置为CSS默认值? 问题答案: 如果回忆有用,应该可以工作……我不知道

  • 问题内容: 如果我尝试声明属性,如下所示: …它不起作用,因为它不被视为“属性”,而仅仅是模型类的一个属性。不仅如此,而且我也禁止访问实际存在的“数量”属性。 那我该怎么办? 问题答案: 这就是我现在正在做的: 我将其建议为PR,因此我们无需在每个Model上都声明此构造函数,并且只需在模型中声明数组即可轻松应用… 更新 : 正如cmfolio指出的那样, 实际的ANSWER非常简单 : 只需覆盖

  • 20.1 属性默认值 Spring Boot支持的一些库使用缓存来提高性能。例如,模板引擎会缓存已编译的模板,以避免重复解析模板文件。此外,Spring MVC可以在服务静态资源时将HTTP缓存的头部添加到响应中。 虽然缓存功能对生产环境非常有益,但在开发过程中可能会产生反作用,使您无法看到程序中刚刚做出的更改。由于这个原因,spring-boot-devtools默认会禁用那些缓存选项。 缓存选