ObjectMapper

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token

一世执手 提交于 2020-07-06 03:01:28
问题 How to read below JSON using Jackson ObjectMapper ? I have developed code but getting below error. com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token at [Source: (File); line: 7, column: 19] (through reference chain: com.example.demo.resources.Orgnization["secondaryIds"]) JSON { "id": "100000", "name": "ABC", "keyAccount": false, "phone": "1111111", "phoneExtn": "11", "secondaryIds": { "ROP": [ "700010015

SpringBoot整合WebSocket

独自空忆成欢 提交于 2020-05-08 16:00:47
一、WebSocket概述 Http协议是一种基于请求/响应的应用层协议,工作原理是客户端(浏览器)与服务端建立TCP连接->客户端向服务端发送http请求报文->服务端收到请求报文进行处理返回一个响应报文->释放TCP连接->浏览器解析响应报文进行渲染。整个过程中都是由客户端发起的,服务端被动反应。如果我们需要实时获取服务器数据,可以通过ajax轮询来实现,不停的进行请求/响应,不停的建立TCP连接,这就造成的资源的极大浪费,而且做不到服务端向客户端发送信息。 由此诞生了websocket协议,最大的特点就是服务端可以主动向客户端发送信息,客户端也可主动向服务端发送信息,是一个双向平等的协议。工作原理是首先使用http建立一个TCP连接并告诉服务器将http协议升级为websocket协议此时就建立了一个持久连接->此时如果服务器由信息输出则直接传输给客户端,客户端不再询问知道客户端关闭连接为止。 二、SpringBoot整合WebSocket 1、导入pom.xml依赖 < dependency >    < groupId > org.springframework.boot </ groupId >    < artifactId > spring-boot-starter-websocket </ artifactId > </ dependency > 2

从搜狐下在每日交易数据的爬虫程序

谁说胖子不能爱 提交于 2020-05-08 10:55:04
网易不行有搜狐,搜狐提供的每日股票交易数据可比网易的强多了,近四千支股票4月的交易数据八万余条一气呵成.看来以后要靠它当主力. 程序: package com.ufo.hy.agumaster.crawler.daytransact; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.ufo.hy.agumaster.entity.DayTransact; public class SohuDTCrawler { private List<DayTransact> dtList; public List<DayTransact> getDtList(){ return dtList; } public void download(String originalCode,String name,String fromDate,String

Jackson 不用注解过滤数据

坚强是说给别人听的谎言 提交于 2020-05-07 18:20:44
import java.util.HashSet; import java.util.Set; import com.fasterxml.jackson.annotation.JsonFilter; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter; import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider; import com.pingpang.websocketchat.ChartUser; public final class JsonFilterUtil { public static void addFilterForMapper(ObjectMapper mapper) { Set<String> sets =new HashSet<String>(); sets.add("userPassword"); SimpleBeanPropertyFilter fieldFilter = SimpleBeanPropertyFilter.serializeAllExcept(sets);

使用jackson解析json串得到树模型,然后遍历树模型获得需要的数据

落花浮王杯 提交于 2020-05-04 21:47:39
Problem:从网址 http://quotes.money.163.com/hs/service/marketradar_ajax.php?host=http%3A%2F%2Fquotes.money.163.com%2Fhs%2Fservice%2Fmarketradar_ajax.php&page=2&query=STYPE%3AEQA&types=&count=28&type=query&order=desc 获得了如下的json文本: {"page":2,"count":28,"total":10085,"pagecount":361,"time":"2020-05-03 12:09:45","list":[{"CODE":"0600256","SYMBOL":"600256","NAME":"\u5e7f\u6c47\u80fd\u6e90","PRICE":2.52,"PERCENT":0.028571,"NUMBER":"7,204\u624b","TITLE":"\u51fa\u73b0\u5927\u4e8e5000\u624b\u6216\u548c\u6d41\u901a\u76d8\u7684\u6bd4\u503c\u5927\u4e8e0.1%\u7684\u5185\u76d8\u6210\u4ea4","TIME":"15:00:05",

SpringMVC解决@ResponseBody返回Json的Date日期类型的转换问题

↘锁芯ラ 提交于 2020-05-04 07:03:56
在做项目的时候,发现后台把Date类型的属性以json字符串的形式返回,前台拿不到转换后的日期格式,始终响应回去的都是long类型时间戳。 查阅资料之后找到解决方法: 方法一(在springmvc的xml配置文件下): < mvc:annotation-driven > < mvc:message-converters > < bean class ="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" > < property name ="objectMapper" > < bean class ="com.fasterxml.jackson.databind.ObjectMapper" > < property name ="dateFormat" > < bean class ="java.text.SimpleDateFormat" > < constructor-arg type ="java.lang.String" value ="yyyy-MM-dd" /> </ bean > </ property > </ bean > </ property > </ bean > </ mvc:message-converters > </ mvc:annotation

后端传输前段Long类型太长,而Java序列化JSON丢失精度的问题

被刻印的时光 ゝ 提交于 2020-05-02 06:14:06
Java序列化JSON时long型数值,会出现精度丢失的问题。 原因: java中得long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值). 解决办法一: 使用ToStringSerializer的注解,让系统序列化 时,保留相关精度 @JsonSerialize(using=ToStringSerializer. class ) private Long createdBy; 上述方法需要在每个对象都配上该注解,此方法过于繁锁。 解决办法(二): 使用全局配置,将转换时实现自动ToStringSerializer序列化 package com.chitic.module.core.config; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializerProvider;

Java解析JSON的四种方式

断了今生、忘了曾经 提交于 2020-05-02 02:16:19
一、什么是JSON JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于阅读和编写,同时也易于解析和生成,并有效地提升网络传输效率。 二、JSON 语法 (1)数据在名称/值对中 (2)数据由逗号分隔 (3)大括号保存对象 (4)中括号保存数组 三、Java中JSON的生成与解析的四种方式(简单的Demo): 一个实体类:用于与JSON数据进行相互转换 public class Person { private String name; private String sex; private int age; public Person(String name, String sex, int age) { this.name = name; this.sex = sex; this.age = age; } public String getName() { return name; } public String getSex() { return sex; } public int getAge() { return age; } @Override public String toString() { return "Person{name='" + name + '\''

Json字符串与Object对象相互转换的几种方式

南笙酒味 提交于 2020-05-01 16:08:12
Json-Lib、Org.Json、Jackson、Gson、FastJson五种方式转换json类型 只列举了最省事的方式。不涉及复制情况和速度。 测试用例,一个User类,属性name,age,location。重写toString()。 public class User { private String name; private Integer age; private String location; public User() { } public User(String name) { this.name = name; } public User(String name, Integer age) { this.name = name; this.age = age; } public User(String name, Integer age, String location) { this.name = name; this.age = age; this.location = location; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return

spring boot 枚举使用的坑2

百般思念 提交于 2020-04-28 21:31:32
上一篇说到在枚举当在controller的方法做参数时的坑,解决方法是配置了一个converter,后来想想,如果不闲每次都加一个注解麻烦的话,可以在参数前面加一个注解,添加一个解析器应该也可以解决这个问题。 现在来说说枚举的第二个坑,前提条件和上一篇的一样:就是这个枚举: @Getter @AllArgsConstructor public enum EnumExpenseType implements BaseEnum { 小欢喜( 1 ), 大欢喜( 2 ); private final int value; } 现在还是把它当参数,但是是做为一个复杂对象的属性来传,这个复杂对象是通过jackjson反序列化得到的。 就是前端传过来一个json串,我们在controller中把它反序列化对象。 就不演示了,直接说结论了,jackson默认是使用索引值ordinal来做映射的,所以还是不能满足我们的需求。 所以不是修改jackson的配置,或对每个枚举做修改,添加一个 @JsonCreator, 我还是喜欢统一的配置, 直接上代码: /** * 解决BaseEnum接收前端json时,应按照value值进行处理,实际是按照索引值处理 */ @JsonComponent public class BaseEnumDeserializer extends