考虑:
public class Foo
{
public string FooName { get; set; } = "FooName";
public Bar Bar { get; set; } = new Bar();
}
public class Bar
{
public string BarName { get; set; } = "BarName";
}
如果我们序列化Foo(),输出是:
{"FooName":"FooName","Bar":{"BarName":"BarName"}}
我想要:
{"FooName":"FooName", "BarName":"BarName" }
最干净的方法是什么?
您可以使用自定义转换器来完成此操作,例如,这是一个快速而肮脏的示例:
public class BarConverter : JsonConverter
{
public override bool CanConvert(Type objectType) => typeof(Bar) == objectType;
public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(((Bar)value).BarName);
value.Dump();
}
}
然后这样装饰你的模型:
public class Foo
{
public string FooName { get; set; } = "FooName";
[JsonConverter(typeof(BarConverter))]
public Bar Bar { get; set; } = new Bar();
}
问题内容: 将对象反序列化为()时,嵌套对象反序列化为s。是否可以强制将嵌套对象反序列化为s? 问题答案: 我找到了一种通过提供实现将所有嵌套对象转换为的方法: 文档: Json.NET的CustomCreationConverter
我知道我可以创建一个单独的Report类,然后使用@JSONProperty将其嵌入到ReportResponse中。有没有一种方法可以避免这种情况,并用一个注释标记ReportResponse类,将它映射到JSON中的“Report”元素?
我正在创建一个具有嵌套列表的API。Jackson似乎是一个创建对象的好工具,但我不太清楚如何嵌套列表,我想知道这是否可能。 我的对象看起来像这样。 我希望有一种方法可以将其映射到json,看起来像: 我们希望能够做到这一点,以便我们可以将属性添加到列表中。
问题内容: 在我当前的项目中,我在android中使用GSON库,并且遇到了嵌套地图反序列化的问题。这就是初始json的样子 而我的pojo的 和花类 但是当我尝试反序列化此对象时,我可以访问嵌套的哈希图,示例代码为 有什么建议? 问题答案: 这告诉Gson您想反序列化为未知值类型的Map。您可能会想指定类似的东西,但是您无法在Java中进行指定,因此解决方案是使用他们在Gson中称为TypeTo
问题内容: 我如何才能序列化一个特定的属性,但又防止其反序列化回POCO?是否可以使用属性装饰特定属性? 基本上,我正在寻找一个与ShouldSerialize *方法等效的反序列化方法。 我知道我可以编写一个自定义转换器,但是这样做似乎有点过头了。 编辑: 这里还有一些背景。这背后的原因是我的课看起来像: 我需要请求的属性,但是我不希望它反序列化并触发设置程序逻辑。 问题答案: 最简单的方法是将
我有以下xml 我需要将其反序列化为以下POJO: 这里的问题是被包装在元素中