首先,当我获得User实体时,我试图防止JSON中的递归。为此,我向我的@JsonIdentityInfo类添加了User注释。它可以像预期的那样用于序列化(当我得到User时),但是对于反序列化(注册User),Jackson返回以下内容:
Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: No Object Id found for an instance of `.entity.User`, to assign to property 'i
我有一个类,看起来像这样:
public class Item {
private ItemHeader header;
private ItemBody body;
}
public class ItemHeader {
private int id;
private String name;
}
public class ItemBody {
private List<String> values;
private List<String> details;
}
ItemHeader和ItemBody的字段可以通过Item类中的setter和getter以及
我们使用Google Guice进行DI (主要是通过构造函数注入),使用Jackson进行与JSON之间的对象序列化。因此,我们通过Guice模块构建我们的对象图。
我们如何提供/指示Jackson使用我们预先构建的Guice Injector?或者它自己的基于我们提供的Guice模块的注入器?我更喜欢为它提供注入器,因为我们已经有了基于我们想要运行的环境/配置来控制使用哪个模块的方法。
这是一个单元测试:
public class Building {
@JsonIgnore
public final ElectricalProvider electricalProvid
我正在使用ObjectMapper的一个实例使用jackson构建rest服务,在这里我可以设置配置。Java端值是带有String和int等类型字段的pojos。很简单,直截了当,没什么特别的。
在反序列化之后,我希望对给定类型的每个字段执行一些处理,可能会更改pojo字段中的值。我不想在我的文章中乱扔注释之类的东西,它应该是在ObjectMapper中自我包含的。我也不想覆盖现有的反序列化代码--数据映射本身应该继续按原样工作。
具体示例:假设我想在每个传入字符串上调用toUpperCase(),因为我不喜欢小写字母。我如何创建这种行为?我希望能找到类似的东西,但它似乎并不存在:
obje
在我应用程序中,我有序列,每个序列都有2个字段来表示纹理和.obj文件。
@Entity
public class Serie extends Model {
public File obj;
public File texture;
}
和我的File类:
@Entity
public class File extends Model{
public String path;
}
我想生成一个Json文件来描述我的对象。如您所见,File类恰好有一个字段。出于这个原因,我想生成一个没有JsonArray的Json来描述我的文件字段。
使用Jackson库,它会生成如
我正试图创建这样一个实体
@Entity
public class Person extends Model {
@Id
public int id;
public String name;
}
但是,当我执行toJson(person),时,我的结果包含了id和name两个字段。但我不想让人看到id。
是否有任何注释或其他东西(例如,gson的)会使toJson跳过某些字段,从而使最终的json输出不包含id字段?
简短答案-使用@JsonIgnore (com.fasterxml.jackson.annotation.JsonIgnore)
我正在尝试反序列化一个我不拥有的类的对象。该类具有诸如id_、address_、name_之类的属性名称,但它的getter是getId()、getAddress()、getName()等。
当我尝试使用Jackson对JSON进行反序列化时,我得到
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "id_", not marked as ignorable
看起来这是因为杰克逊在找getId_()而不是getId()。因为我不拥有底层类,所以我不能使用Ja
我需要创建自定义jackson泛型类型化bean反序列化程序。T是实现IEntity的bean。
public interface IEntity {
public int getId();
}
@JsonDeserialize(using = RestLoaderRequestDeserializer.class)
@Produces(MediaType.APPLICATION_JSON)
public class RestLoaderRequest<T extends IEntity> Serializable {
private T entity; // e
我想知道是否有人可以为我回答一个问题,因为我不太明白为什么当我手动将一个json对象传递给spring控制器时,我需要从请求输入流中读取一个json对象。
通常我使用json-rpc框架,它会为我处理所有的事情,所以直到现在我还没有真正的手动做这件事。一切正常,但我不明白的是,为什么请求中没有任何内容,比如当你发布表单时,我不得不使用下面的代码将我的对象映射到Jackson:
BufferedInputStream bis = new BufferedInputStream(request.getInputStream());
ChartParameters chartParameters =
我有一个简单的数据对象层次结构,必须将其转换为JSON格式。如下所示:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "documentType")
@JsonSubTypes({@Type(TranscriptionDocument.class), @Type(ArchiveDocument.class)})
public class Document{
private String documentType;
//other field
在我们的一个项目中,我们使用了一个与MongoDB实例对话的java webapp。在数据库中,我们使用DBRefs来跟踪一些对象关系。我们使用jackson (使用mongodb-jackson-mapper)对POJO对象进行(反)序列化。
然而,我们使用相同的POJO然后(反)序列化到外部世界,在那里我们的前端处理呈现JSON。
现在,我们需要一种让外部世界序列化的方法来包含来自DBRef的引用对象(以便UI可以呈现完整的对象),而我们显然希望将DBRef写入数据库,而不是整个对象。
现在我写了一些未经测试的静态嵌套类代码:
public static class FooReferenc