我面临以下问题:我有一个类,它的数据成员是java。util。可选对象,我需要将其转换为json。代码的一般方式如下所示:
public class MyClass{
public java.util.Optional<MyCustomObject> object;
public Myclass(java.util.Optional<MyCustomObject> object){
this.object = object;
}
public java.util.Optional<MyCustomObject> getObject(){
return this.object;
}
public void setObject(java.util.Optional<MyCustomObject> object){
return this.object = object;
}
}
当我将其转换为json时,会得到如下结果:
Optional[
object
]
我想去掉json中的可选部分。我可以这样做吗?
有多个Java库可用于序列化/反序列化。其中之一是出色的Jackson库,您可以在其中以细粒度的方式调整序列化。
如果您拥有POJOMyClass
的源代码,您只需添加一些注释即可使其正常工作。
如果您假设MyCustomObject
如下所示:
public class MyCustomObject {
private final String myVal;
public MyCustomObject(String myVal) {
this.myVal = myVal;
}
public String getMyVal() {
return myVal;
}
}
然后,您的MyClass
对象可以这样声明(注意注释@JsonIgnore
和@JsonProperty
):
public class MyClass {
private Optional<MyCustomObject> object;
public MyClass(Optional<MyCustomObject> object) {
this.object = object;
}
// Ignore the "normal" serialization
@JsonIgnore
public Optional<MyCustomObject> getObject() {
return this.object;
}
public void setObject(Optional<MyCustomObject> object) {
this.object = object;
}
// This handles the serialization
@JsonProperty("object")
private MyCustomObject getObjectAndYesThisIsAPrivateMethod() {
return getObject().orElse(null);
}
}
最后,您可以使用以下代码序列化为JSON:
ObjectMapper mapper = new ObjectMapper();
final String json = mapper.writeValueAsString(
new MyClass(Optional.ofNullable(new MyCustomObject("Yes, my value!"))));
上述代码的魔力在于使用ObjectMapper来处理数据绑定,即POJO和JSON之间的转换(反之亦然)。
另一种方法是,如果您不拥有MyClass的源代码,即您不能修改它,那么您可以按照Jackson文档中的描述创建自定义序列化程序。
问题内容: 使用Jackson 2,我正在寻找一种 通用的 方式将对象序列化为单个值(然后序列化它们,然后再填充该单个字段),而不必重复创建JsonSerializer / JsonDeserializer来处理每种情况。@JsonIdentityInfo批注非常接近,但由于我知道,它将始终对完整的子对象进行序列化,因此略微遗漏了该标记。 这是我想做的一个例子。给定的类: 我希望Order可以序列
问题内容: 我需要将一些以形式表示的数据转换为。我想使用此 Java实现来执行此操作,但我不明白该怎么办。 我看了几本教程,并在Internet上阅读了一些有关内容的文章,但不了解最简单的东西:如何转换为? 例如,我在JSON中有以下代码: 我现在应该怎么办?像什么? 问题答案: 在您的数据中添加一个“ @context”条目。 您的JSON-LD处理器将完成其余工作(从0.9版开始) 作为测试,
我试图从python向json文件发送一个简单的字典,但我一直收到“TypeError:1425不是json可序列化的”消息。 如果我添加默认参数,那么它会写入,但整数值会作为字符串写入json文件,这是不可取的。
问题内容: 我有以下用于序列化查询集的代码; 以下是我的 我需要序列化。但是它说无法序列化。因为列表由Django对象和字典组成。有任何想法吗 ? 问题答案: 并且不能很好地与Django对象配合使用。 Django的内置序列化器只能序列化由django对象填充的查询集: 在您的情况下,其中包含django对象和dict的混合。 一种选择是摆脱中的模型实例,并使用dict将其替换为: 希望有帮助。
我在VS Studio中编写了一个C#Web API,并创建了许多DTO,这些DTO被序列化为任何客户端都可以使用的JSON实体。我的一个API调用是返回一个PDF文件,所以经过一些在线研究,我设置了其中一个DTO是以以下格式设置的。我在某处读到你可以做到这一点,但不是百分之百确定: 当将对象作为IHttpActionResult返回时,我不会得到任何错误: 我可以在服务器上看到报告byte[]的
问题内容: 我正在客户端和Django服务器之间发送信息,并且我想对此使用JSON。我正在发送简单的信息-字符串列表。我尝试使用,但是当我这样做时, 看来这只能用于Django对象。如何序列化简单的Python对象? 问题答案: 你可以使用纯Python执行此操作: