Tag: jackson

jackson:无法反序列化START_OBJECT令牌中的Number实例

我的GWT服务返回LinkedList 。 这是VisualData外观: import javax.xml.bind.annotation.XmlRootElement; import com.google.gwt.user.client.rpc.IsSerializable; @XmlRootElement public class VisualData implements IsSerializable { private Number value; private long timestamp; public VisualData() { } public VisualData(Number value, long timestamp) { this.value = value; this.timestamp = timestamp; } public long getTimestamp() { return timestamp; } public Number getValue() { return value; } public void setTimestamp(long timestamp) […]

将字段传递给自定义反序列化器类Jackson

我编写了一个自定义反序列化器,只使用jackson映射必需的字段。 开始。 public class GeneralDeserializer extends JsonDeserializer { @Override public GeneralDomain deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { final JsonNode jsonNode = jp.getCodec().readTree(jp); final Map map = new ObjectMapper().convertValue(jsonNode, Map.class); final String event = “Proxy”; return new GeneralDomain(map.get(“id”), event, map.get(“name”), map.get(“lastLogin”)); } @Override public Class handledType() { return GeneralDomain.class; } } 我也有一个mixin类,可以添加额外的注释。 @JsonDeserialize(using = […]

在Java中将csv行转换为JSON对象

我有一个与此类似的csv文件 “name.firstName”,”name.givenName”,”name.DisplayName”,”phone.type”,”phone.value” “john”,”maverick”,”John Maverick”,”mobile”,”123-123-123″ “jim”,”lasher”,”Jim Lasher”,”mobile”,”123-123-123″ 我想将第2行和第3行转换为JSON对象。使用第一行作为标题。 结果将是 [ { “name”: { “firstName”: “john”, “givenName”: “maverick”, “DisplayName”: “John Maverick” }, “phone”: { “type”: “mobile”, “value”: “123-123-123” } }, { “name”: { “firstName”: “john”, “givenName”: “maverick”, “DisplayName”: “John Maverick” }, “phone”: { “type”: “mobile”, “value”: “123-123-123” } ] 知道怎么做到这一点?

使用Jackson在Java中解析JSON的子集

鉴于Json,是否可以使用Jackson来解析消息的一部分? 假设我感兴趣的数据埋藏在深层次的字段中,我根本不关心为每个类创建DTO类。 鉴于一个非常简化的场景,我想在不知道任何关于它之前的结构的情况下对Telephone类进行建模: …{ “firstName”: “John”, “lastName” : “doe”, “age” : 26, “address” : { “streetAddress”: “naist street”, “city” : “Nara”, “postalCode” : “630-0192” }, “phoneNumbers”: [ { “type” : “iPhone”, “number”: “0123-4567-8888” }, { “type” : “home”, “number”: “0123-4567-8910” } ] }…. 我正在考虑使用json-path和反序列化我感兴趣的部分。 一些伪: List phoneNrs = parse(“.my.deep.structure.persons.phoneNumbers”, List);

jacksonJSON – unmarshal上的“没有单字符串构造函数/工厂方法”错误

最简单的情况会给我带来麻烦。 我第一次遇到它。 我能够解组稍微复杂的json,但这个简单的失败了。 什么会导致这个以及为什么jackson只用一根弦就麻烦了? 一个包含用户角色名称的简单类。 public class UpdateUserRole { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } 控制器内部 public void updateUserRole(@PathVariable Long id, @RequestBody UpdateUserRoleReq req) { } 一旦jackson看到这一点,它就会抛出这个错误 org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not instantiate value of type [simple type, class […]

在Spring MVC中使用Jackson JSON时,如何默认启用Pascal大小写?

我有一个使用Spring MVC创建和处理多个REST端点的项目。 我目前正致力于使用Jackson自动处理使用@RequestBody和@ResponseBody注释的JSON的分类/反序列化。 我让jackson工作了,所以我有一个起点。 我的问题是我们的旧序列化手动完成并使用Pascal套管而不是Camel套管(“MyVariable”而不是“myVariable”),jackson默认使用Camel套管。 我知道我可以使用@JsonProperty手动更改变量的名称。 话虽这么说,我不认为将@JsonProperty添加到我的所有变量中是一个可行的长期解决方案。 除了使用@JsonProperty注释之外,有没有办法让Jackson在序列化和反序列化时使用Pascal大小写? 编辑:看起来外部没有干净的方法。 有几个人建议重写不同的课程,以此来实现我的目标。 我愿意接受有关我可以改写的改变套管的建议。 目前我已经创建了一个自定义的ObjectMapper来设置我想要的一些属性(即Inclusion.NON_NULL )。 我还没有找到任何可以让我改变套管行为的地方。 有什么想法吗?

想要在响应Json的密码上添加@JsonIgnore属性

我想在用户域的密码属性中添加Jackson的@JsonIgnore,这样我必须能够发送带有密码的Json,并将数据保存在数据库中,但作为响应,我不想显示密码。 我该如何实现这一点请帮助我。 我尝试在定义属性的用户的域级别使用它,但它完全忽略了getter和setter方法中的属性。 我试过这个 private String password; @JsonIgnore public String getPassword() { return this.password; }

如何转换Jackson和Gson之间的日期?

在我们的Spring配置的REST服务器中,我们使用Jackson将对象转换为Json。 该对象包含几个java.util.Date对象。 当我们尝试使用Gson的fromJson方法在Android设备上反序列化它时,我们得到一个“java.text.ParseException:Unparseable date”。 我们已经尝试将日期序列化为自1970年以来相应于毫秒的时间戳,但得到相同的exception。 可以将Gson配置为将时间戳格式的日期(例如1291158000000)解析为java.util.Date对象吗?

使用jackson创建简单的JSON结构

我只想创建相当于以下的jackson映射: {\”isDone\”: true} 我想我需要创建一个这样的类: public class Status { private boolean isDone; public boolean isDone{ return this.isDone; } public void setDone(boolean isDone){ this.isDone = isDone; } } 但是如何实现它然后将JSON写入字符串?

获取jackson的未知领域列表

我有一个JSON模式和一个匹配模式的json字符串,除了它可能有一些额外的字段。 如果我没有添加objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);那么如果那些字段存在,jackson将抛出exceptionobjectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); 。 有没有办法获取这些额外字段的集合来记录它们,即使我抛出exception? 这是代码的相关位: public boolean validate(Message json) { List errorList = jsonSchema.validate(json.getPayload()); ObjectMapper mapper = new ObjectMapper(); try { Update update = mapper.readValue(json.getPayload(), Update.class); } catch (IOException e) { System.out.println(“Broken”); } if(!errorList.isEmpty()) { LOG.warn(“Json message did not match schema: {}”, errorList); } return true; }