Tag: jackson

如何在不重写serialize方法的情况下覆盖特定类的JsonSerializer的isEmpty方法?

我想为isEmpty方法添加自定义行为。 当我从JsonSerializer扩展时 我应该覆盖serialize方法,因为它是抽象的。 我想按原样保留serialize方法并仅覆盖isEmpty方法。

用Jackson Java解析JSON

我在与jackson解析JSON时遇到了问题。 我有一个POJO对象,由另一个包裹。 这是我的代码: in main: ObjectMapper mapper = new ObjectMapper(); List mpl2 = mapper.readValue(col.toString(),new TypeReference<List>() {}); my POJO class: public class ItemBean implements Serializable { private List items; @JsonProperty(“Item”) public List getItems() { return items; } public void setItems(List items) { this.items = items; } } public class Item implements Serializable{ public String field1; public […]

XMLWriter使用zdef扩展属性名称?

我尝试使用XMLMapper将一些配置类序列化为xml配置文件。 但我在属性生成方面遇到了一些麻烦。 实际上生成的XML是完美的,但XMLMapper有时会为我的属性名称添加前缀。 例如 代替 这真的很糟糕,因为我不能再用XOM处理xml结构了:( 这种效果来自哪里? 我发现xml生成器似乎自动修复命名空间以使属性唯一。 为什么这是必要的,我该如何避免呢?

使用Java和Jackson将Json序列化为无需架构的通用结构

我需要序列化JSON而不附加到结果对象的特定模式,例如,某些通用的set / map / hashmap。 作为输入 ,我有一个带有JSON的字符串。 我不知道那个JSON的架构。 作为输出,我想要一个Java对象,如Hashmap或类似的,具有输入的键值序列化。 请注意,输入JSON包含基本字段和Array / List。 我必须使用Java和Jackson(或其他一些库)。 我怎么可能那样做?

无法在Spring Boot中将ProblemHandler设置为ObjectMapper

我尝试使用Jackson2ObjectMapperBuilderCustomizer将自定义问题处理程序添加到对象映射器: @Bean public Jackson2ObjectMapperBuilderCustomizer customizer() { return new Jackson2ObjectMapperBuilderCustomizer() { @Override public void customize(Jackson2ObjectMapperBuilder builder) { ObjectMapper m = builder.build(); m.addHandler( new DeserializationProblemHandler() { @Override public boolean handleUnknownProperty(DeserializationContext ctxt, JsonParser p, JsonDeserializer deserializer, Object beanOrClass, String propertyName) throws IOException { System.out.println(“ahahahaa”); return super.handleUnknownProperty(ctxt, p, deserializer, beanOrClass, propertyName); } } ); } }; } 但是当我自动assemblyObjectMapper bean时,_problemHandlers属性为null。 […]

jackson过滤掉没有注释的字段

我试图通过SimpleBeanPropertyFilter使用以下(简化)代码过滤掉序列化中的某些字段: public static void main(String[] args) { ObjectMapper mapper = new ObjectMapper(); SimpleFilterProvider filterProvider = new SimpleFilterProvider().addFilter(“test”, SimpleBeanPropertyFilter.filterOutAllExcept(“data1”)); try { String json = mapper.writer(filterProvider).writeValueAsString(new Data()); System.out.println(json); // output: {“data1″:”value1″,”data2″:”value2”} } catch (JsonProcessingException e) { e.printStackTrace(); } } private static class Data { public String data1 = “value1”; public String data2 = “value2”; } 我使用SimpleBeanPropertyFilter.filterOutAllExcept(“data1”)); 我原以为创建的序列化Json字符串只包含{“data1″:”value1”} […]

jackson中不区分大小写的JsonNode

我需要反序列化JSON对象并以不区分大小写的方式访问字段。 例: String s = “{\”FOO\”: 123}”; ObjectMapper mapper = new ObjectMapper(); JsonNode node = mapper.readTree(s); node.get(“foo”); // this should return the “FOO” field 这需要getFieldNames() ,因此调用getFieldNames()并降低结果并不是一个好的解决方案。

Jackson JsonView未被应用

jackson2.2.2 ObjectMapper mapper = new ObjectMapper(); mapper.getSerializationConfig().withView(Views.Public.class); mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false); // if I try to simply configure using .without that config feature doesn’t get set. // I MUST use the .configure as above, but I guess that’s a different question. // .without(MapperFeature.DEFAULT_VIEW_INCLUSION); // this first one doesn’t have the view applied. String result = mapper.writeValueAsString(savedD); // […]

RestEasy:org.codehaus.jackson.map.JsonMappingException:无法从START_OBJECT标记(..)中反序列化java.util.ArrayList的实例

我有一个rest端点,它返回List 。 我试图测试这个rest端点为 @Test public void testGetAllVariablesWithoutQueryParamPass() throws Exception { final ClientRequest clientCreateRequest = new ClientRequest(“http://localhost:9090/variables”); final MultivaluedMap formParameters = clientCreateRequest.getFormParameters(); final String name = “testGetAllVariablesWithoutQueryParamPass”; formParameters.putSingle(“name”, name); formParameters.putSingle(“type”, “String”); formParameters.putSingle(“units”, “units”); formParameters.putSingle(“description”, “description”); formParameters.putSingle(“core”, “true”); final GenericType<List> typeToken = new GenericType<List>() { }; final ClientResponse<List> clientCreateResponse = clientCreateRequest.post(typeToken); assertEquals(201, clientCreateResponse.getStatus()); final List variables = […]

如何使用Spring RestTemplate表示为JSON的查询参数?

我需要使用Spring RestTemplate向具有表示为JSON的查询参数的HTTP端点发出请求。 restTemplate.getForObject( apiRoot + “/path” + “?object={myObject}”, Response.class, new MyObject()) 在这里,我需要将MyObject转换为JSON(显然是URL编码)。 但RestTemplate只是将其转换为带有toString调用的String 。 MyObject可由Jackson转换为JSON。 UriComponentsBuilder行为方式相同: UriComponentsBuilder.fromHttpUrl(apiRoot) .path(“/path”) .queryParam(“object”, new MyObject())) .queryParam(“access_token”, accessToken) .toUri() 有没有办法避免手工调用ObjectMapper.writeValueAsString ? 更新:澄清一下,在结果中我需要在我的URI中使用?object={“key”:42} (或者在URL编码forms?object=%7B%22key%22%3A42%7D ),因为MyObject有一个属性key ,值等于42 。