当前位置: 首页 > 面试题库 >

在类级别配置Json.NET序列化设置

屠锦
2023-03-14
问题内容

我希望使用驼峰式命名约定对我的班级进行序列化和反序列化。我知道我可以使用此处所述的JsonConvert.SerializeObject(object,settings)重载:

var serializerSettings = new JsonSerializerSettings();
serializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
var json = JsonConvert.SerializeObject(product, serializerSettings);

有什么办法可以通过类属性(通过属性)应用相同的配置,这样我就不需要覆盖序列化设置了?

我可以编写一个自定义转换器,但是对于这样简单的事情来说,这似乎有些过头了。


问题答案:

如果您使用的是Json.NET9.0.1或更高版本,则可以使用上的NamingStrategyType属性JsonObjectAttribute来实现所需的功能。如果您需要将参数传递给NamingStrategy的构造函数,请使用NamingStrategyParameters属性指定它们。下面是一个如何使用驼峰式命名策略指定类的示例。

[JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]
public class Foo
{
    public string Bar;
}


 类似资料:
  • MapStruct文档对为NullValueMappingStrategy选择的合理默认值有如下说明。返回默认值: Bean映射:将返回一个“空”的目标Bean,除了常量和表达式之外,它们将在出现时填充。 基本体:将返回基本体的默认值,例如,布尔值为false,int值为0。 迭代器/数组:将返回一个空的迭代器。 地图:将返回一个空地图。 问题是,我们希望能够在@Mapper级别上指定,例如,It

  • TestNG groups注释是在测试方法级别声明的,也就是说,您可以指定特定测试方法可以属于哪些组。 如。 对于所有测试方法只属于一个组的给定场景,在每个测试方法中指定组名几乎是一种开销。在这种情况下,有没有办法将组名设置为更高的(类)级别?

  • 问题内容: 我正在使用以下类型定义Json.NET属性,然后在其方法内部使用Json.NET对其进行序列化: 我的问题是,它将返回“ {}”。这是为什么?以前在工作。我所做的唯一更改是更改了OptIn而不是OptOut,因为我希望包含的属性少于保留的属性。 问题答案: 如Newtonsoft在本期中所述,Json.NET实际上支持属性。但是,当相应的“真实”成员是属性时,似乎Json.NET要求成

  • 问题内容: 我想将SpecialObject序列化为JSON,然后再次返回。“ SpecialObjectIDs”访问器使我避免了讨厌的循环引用,并且因为我只需要唯一的ID,就可以帮助我重建复杂的关系网络。 它可以很好地序列化,但是我需要反序列化对象;当我这样做时,我的数组(JSON中的SpecialObjectIDs)在转换期间就消失了,似乎没有调用set访问器。 如何获取Newtonsoft.

  • 问题内容: 当字符串缺少C#类所需的属性时,我想抛出一个。 有那个 反序列化过程中遇到缺少的成员时,抛出JsonSerializationException。 但是我认为这与我想要的相反。我认为这意味着C#类上缺少成员。我想要一个失踪的Json成员。 我的代码是 例如 json中缺少P2。我想知道是什么情况。 谢谢。 问题答案: 您必须使用以下命令将P2属性设置为必选 通过您的示例,您将获得一个。

  • 我需要对一个长而复杂的json进行反序列化,为此我编写了一组java类来映射数据,并且我必须为许多不同类型的字段(包括String、Boolean、BigDecimal等)编写自定义反序列化器。 我知道我可以用相应的自定义反序列化器注释java类中的所有字段(如下所示),但是我需要注释所有类中的几乎所有字段。 或者可以通过某种方式为类实现自定义反序列化,该类定义如何根据每个字段的数据类型反序列化每