草庐IT

java - 在 Jackson 的 ObjectMapper 中动态启用/禁用 UNWRAP_ROOT_VALUE 和 WRAP_ROOT_VALUE?

有没有办法动态启用/禁用Jackson的ObjectMapper中的UNWRAP_ROOT_VALUE和WRAP_ROOT_VALUE。我必须根据调用的服务启用/禁用这些属性,有些请求需要JsonRootName而有些则不需要。我在需要它的类中有@JsonRootName注释。我有一个扩展Jackson对象映射器的自定义ObjectMapper类。我正在调用一种方法来根据调用的服务启用/禁用属性,但它似乎不起作用。publicvoidsetWrapValue(booleanwrap){finalAnnotationIntrospectorintrospector=newJacksonA

java - 使用 JsonView 将 POJO 转换为 JsonNode

我正在编写一个典型的PlayFramework应用程序,我想在其中使用Jackson从我的Controller的方法中返回一个JsonNode。这就是我现在的做法:publicstaticResultfoo(){MyPojoTypemyPojo=newmyPojo();Stringtmp=newObjectMapper().writerWithView(JSONViews.Public.class).writeValueAsString(myPojo);JsonNodejsonNode=Json.parse(tmp);returnok(jsonNode);}是否可以使用View避免“S

java - 使用 uberjar 中的 Jersey 和 Jackson 时不支持的媒体类型

我目前面临Jersey和Jackson的问题,我无法找到解决方案:当我尝试从JSON序列化一个POJO作为Jersey端点中的POST参数时,如果出现以下情况,它会返回错误我从uberjar中调用它。如果我在从Eclipse启动主方法后使用相同的wget调用,则一切正常,并且我得到了预期的答案。我搜索过其他人在使用Jersey和后参数应用程序类型时遇到问题,例如Error415UnsupportedMediaType:POSTnotreachingRESTifJSON,butitdoesifXML和JAX-RS:Howtoautomaticallyserializeacollectio

java - 使用带有泛型的 Jackson ObjectMapper 到 POJO 而不是 LinkedHashMap

我正在使用Jersey定义如下服务:@Path("/studentIds")publicvoidwriteList(JsonArraystudentIds){//iterateoverstudentIdsandsavethem}JsonArray在哪里:publicclassJsonArrayextendsArrayList{publicJsonArray(Stringv)throwsIOException{ObjectMapperobjectMapper=newObjectMapper(newMappingJsonFactory());TypeReference>typeRef=ne

java - Jersey & Jackson - 修改 Jackson 输出的资源

我目前正在使用Jersey&Jackson创建REST服务。现在,当Resource方法生成application/json并返回一个POJO时,它会正确地将对象序列化为JSON并将响应返回给客户端。我现在要做的是设置Jersey,这样当查询参数出现时(比如说“缩进”),我可以告诉Jackson以“更漂亮的格式,也就是缩进”序列化JSON。您可以通过使用SerializationConfig.Feature.INDENT_OUTPUT配置JSON映射器轻松告诉Jackson执行此操作。问题是,我如何根据每个请求获取查询参数并使用它来修改Jackson的输出?

java - 我可以自定义 Jackson 错误消息吗?

我有一个JacksonMappingException,我用它来为用户产生错误:publicMap>>getErrors(JsonMappingExceptione){Map>>errors=newHashMap();List>badFields=newArrayList();for(Referenceref:e.getPath()){MapbadField=newHashMap();badField.put("field",ref.getFieldName());badField.put("description",e.getOriginalMessage());badFields.

java - Spring 数据休息 : RepositoryRestController deserialization from URI not working

我的问题是从URI字符串反序列化实体。当我使用由SpringDataRest生成的HTTP接口(interface)时,一切正常。我可以针对我的端点/api/shoppingLists发布以下JSON,它将被反序列化为以管理员为所有者的购物list。{"name":"Test","owners":["http://localhost:8080/api/sLUsers/admin"]当我使用自定义RepositoryRestController时,这不再起作用。如果我将完全相同的JSON发布到相同的端点,我会收到此响应。{"timestamp":"2015-11-15T13:18:34.

java - 有没有办法从元注释中注入(inject) Jackson 注释值,类似于 Spring 的 AliasFor 注释?

我们正在使用@JacksonAnnotationsInside并希望使用元注释从类中注入(inject)一个属性。即我们有一个带有@JsonTypeInfo()的元注解,并希望通过聚合注解注入(inject)defaultImpl。这是我尝试使用的注释:@Inherited@JacksonAnnotationsInside@Retention(RetentionPolicy.RUNTIME)@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS,include=JsonTypeInfo.As.PROPERTY,property="@class")//,defau

java - 即使存在默认构造函数,也无法从对象值反序列化(没有基于委托(delegate)或属性的创建者)

我有一个类看起来像classMyClass{privatebyte[]payload;publicMyClass(){}@JsonCreatorpublicMyClass(@JsonProperty("payload")finalbyte[]payload){this.payload=payload;}publicbyte[]getPayload(){returnthis.payload;}}我正在使用Jackson进行序列化然后反序列化。序列化工作正常,但在反序列化期间,我收到此错误消息-Cannotconstructinstanceof`mypackage.MyClass`(noC

java - 带有日期对象的 Jersey + Jackson 反序列化失败

我同时使用jersey和jackson来开发我的RESTAPI,但在反序列化日期字符串时遇到问题。我已经在Jersey注册了一个提供者类:@ProviderpublicclassMyJsonProviderextendsJacksonJsonProvider{publicstaticfinalStringDATE_FORMAT="yyyy-MM-ddHH:mm:ss";@OverridepublicvoidwriteTo(Objectvalue,Classtype,TypegenericType,Annotation[]annotations,MediaTypemediaType,Mu