Json.NET文档说您过去JsonIgnore
不对类中的某些属性进行序列化:
public class Account
{
public string FullName { get; set; }
public string EmailAddress { get; set; }
[JsonIgnore]
public string PasswordHash { get; set; }
}
在使用序列化第3方对象时,如何使Json.NET忽略特定属性JsonConvert.SerializeObject
?
制作自定义合同解析器:
public class ShouldSerializeContractResolver : DefaultContractResolver
{
public static ShouldSerializeContractResolver Instance { get; } = new ShouldSerializeContractResolver();
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
JsonProperty property = base.CreateProperty(member, memberSerialization);
if (typeof(Account).IsAssignableFrom(member.DeclaringType) && member.Name == nameof(Account.PasswordHash))
{
property.Ignored = true;
}
return property;
}
}
我如何测试它:
var account = new Account
{
PasswordHash = "XXAABB"
};
var settings = new JsonSerializerSettings
{
ContractResolver = ShouldSerializeContractResolver.Instance
};
var json = JsonConvert.SerializeObject(account, settings);
Console.WriteLine(json);
问题内容: 我正在一个实体框架项目。我想序列化一堆实体类实例。我将它们绑定到一个容器类中: Etcetera …这是我尝试序列化的此类的一个实例。我希望JSON.NET序列化每个实际上是基础数据库中的列的每个实体类实例的成员。我甚至不想尝试序列化对象引用。 特别是,我的实体类具有虚拟成员,这些成员使我能够编写可导航所有实体关系的C#代码,而不必担心实际的键值,联接等问题,并且我希望JSON.NET
我的控制器接收到的JSON数据如下: 问题是对象“ContainedObject”被解释为是,并且它正在被实例化。因此,只要我的控制器读取这个JSON数据,它就会生成一个ContainedObject对象类型的实例,但我需要它为空。 最简单、最快的解决方案是,在接收的JSON数据中,该值为空,如下所示: 我的实体类如下: 和包含的对象类,如下所示:
问题内容: 在反序列化过程中(据我了解,这是将JSON数据转换为Java对象的过程),我如何告诉Jackson,当它读取不包含数据的对象时,应该忽略它吗? 我正在使用Jackson 2.6.6和Spring 4.2.6 我的控制器收到的JSON数据如下: 问题是对象“ containedObject”按原样解释,并且正在实例化。因此,控制器读取此JSON数据后,它将立即生成ContainedObj
问题内容: 长话短说,我的一个实体有一个GeometryCollection,当您调用“ getBoundary”时会引发异常(这是另一本书的原因,现在让我们说这是它的工作方式)。 有没有办法让我告诉Jackson不要包括那个特定的吸气剂?我知道自己拥有/控制代码时可以使用@JacksonIgnore。但是,事实并非如此,Jackson通过父对象的连续序列化结束了这一点。我在杰克逊文档中看到了一个
几天来我一直在想办法解决这个问题。糟糕的是,hibernate没有提供ready to use annotation来将属性排除在脏检查之外。问题是,我有一节课,如下所示
然后使用这个changelog文件执行liquibase,它驻留在目录/home/changelogs中。则应用更改。然后使用相同的changelog文件再次运行liquibase。正如预期的那样,这次不应用更改。 但如果我将更改日志文件移动到/home/changelog/migration并再次运行liquibase,则应用更改。 liquibase似乎将changelog的路径包含在deci