JSON各种转换问题(json转List,json转对象等)
作者:你可以叫我老白 发布时间:2021-09-28 08:53:45
标签:json,List
首先引入jar包:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
JSON相关
1.json转对象
Student o = JSONObject.parseObject(jsonString, Student.class);
2.json转List
List<Student> studentList = JSONObject.parseArray(jsonString, Student.class);
或者
String jsonString = “[[1,"zhangsan","male",18,"Beijing"],[2,"lisi","female",18,"Shanghai"]]”
List<List<Object>> list = JSON.parseObject([jsonString], new TypeReference<List<List<Object>>>() {});
3.对象转json
JSON.toJSONString(user);
4.List转json
JSON.toJSONString(users);
JSONObject相关:
1.json转JSONObject方法
String json = "";
JSONObject jsonObject = JSON.parseObject(json);
2.JSONObject转json方法
jsonObject.getString(key);
3.JSONObject转List
JSONObject jsonObject = JSON.parseObject(json);
// 获取到我们的jsonobject参数,并toJSONString
String s = JSONArray.toJSONString(jsonObject.get("servers"));
// 将json字符串转换为集合对象(实体类就省略了啊)
List<AnswerCardVo> cardVos = JSONArray.parseArray(s, AnswerCardVo.class);
4.Map转JSONObject
//直接调用new方法
Map map1 = new HashMap();
map1.put("one",users1);
map1.put("two",users1);
JSONObject mapJsonObject =(JSONObject) JSONObject.toJSON(map1);
System.out.println(mapJsonObject);
以上内容是接收字段与json字段一致的时候,那么不一致的时候怎么处理?
com.fasterxml.jackson包
例:json串内容如下,要转成List
注意:可以看到,该json串中属性名是这样的OS-EXT-STS:task_state,那么我们接收的bean就无法写成这个属性名去接收,所以需要在接收Bean中使用注解@JsonProperty进行处理
json串
{
"count": 3,
"servers": [{
"fault": null,
"id": "5c1ac257-",
"OS-EXT-STS:task_state": null,
"cpu_options": {
"hw:cpu_threads": null
}
}]
}
可以看到注解@JsonProperty中指定了要接收哪个的值,这样就可以正常转换了
对象:
public class HwInstance {
private String fault;
private String id;
@JsonProperty("OS-EXT-STS:task_state")
private String state;
@JsonProperty("cpu_options")
private Object options;
}
转List
方法一:
@Autowired
private ObjectMapper objectMapper;
String json = "";
JSONObject jsonObject = JSON.parseObject(json);
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(ArrayList.class, HwInstance.class);
List<HwInstance> instances = objectMapper.readValue(objectMapper.readTree(jsonObject.toJSONString()).get("servers").toString(), javaType);
方法二:
@Autowired
private ObjectMapper objectMapper;
String json = "";
List<HwInstance> instances = objectMapper.readValue(objectMapper.readTree(json).get("servers").toString(),new TypeReference<List<HwInstance>>(){});
注意:可能会遇到报错的情况如下:
报错信息:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field “isleader”
意思是json’中的字段与实体类不匹配,解决办法如下:
办法一:给objectMapper设置一个属性
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
办法二:给实体类加一个注解
@JsonIgnoreProperties(ignoreUnknown = true)
来源:https://blog.csdn.net/zth_killer/article/details/128695599


猜你喜欢
- 甲:听说最近java跌落神坛,python称霸武林了,你知道吗?乙:不是吧,我前几天看python怎么还是第三?丙:你们都在扯蛋,pytho
- 前言今天给大家总结介绍一下Java类中this关键字和static关键字的用法。this关键字用法:this.属性可以调用类中的成员变量th
- 本文实例为大家分享了Java Socket实现多人聊天系统的具体代码,供大家参考,具体内容如下前言GitHub地址开发环境:Eclipse
- 目录input 指令模拟输入textkeyeventtapswipe主要思路是使用 adb shell input指令来模拟按键及触摸输入。
- ??Chip监听选中状态的监听:setOnCheckedChangeListener,该监听只有设置了checkable 属性为true或者
- 布局管理器在java.awt 包中提供了5中常用的布局管理器,分别式FlowLayout(流式布局管理器)、BorderLayout(边界布
- Android镂空字体的实现效果图,感兴趣的朋友可以参考实现代码。效果图:记录一下...自定义TextViewpublic class Ho
- SpringMVC 中,文件的上传,是通过 MultipartResolver 实现的。 所以,如果要实现文件的上传,只要在 spring-
- 如果问你在日常开发中用到的最多的一个 Java 类是什么,阿粉敢打赌绝对是 String.class。说到&n
- 前期准备首先要先明确有个大体的思路,要实现什么样的功能,了解完成整个模块要运用到哪些方面的知识,以及从做的过程中去发现自己的不足。技术方面的
- 目录关于日志级别为什么选用log4j2排除 spring-boot 自带的 logback 依赖添加 log4j2 依赖配置文件节点解析根节
- 本文实例讲述了Android编程实现activity dialog透明背景的方法。分享给大家供大家参考,具体如下:首先查一下window&n
- 不过在实际的工作中,很少会直接用到它。通常都是用的spring-quartz组件,直接通过配置,让spring框架来自动装配如下就是spri
- ArrayList中存放引用数据类型ArrayList中存放引用类型时,存放的是一个引用,因此在放入ArrayList之后再进行改动会影响到
- /// <summary> /// 为图片生成缩略图 /// </summ
- 在工作过程中,需要将一个文件夹生成压缩文件,然后提供给用户下载。所以自己写了一个压缩文件的工具类。该工具类支持单个文件和文件夹压缩。放代码:
- 将C语言封装成函数dll供C#端调用,需要传递的byte数组作为函数参数来传递。1、打开Visual Studio2017创建一个C的dll
- 在项目开发过程中,不可避免的会升级开发工具。这次我在旧项目版本升级到新版Unity2021.2.x时,出现Visual Studio无法定位
- 项目要用到Webview和js交互,查了查以前的项目感觉还是有必要整理下的。 简单描述下项目中用到的地方,比如说在web页需要用到登录的地方
- 最近做了一个项目其中有需求,要实现自动登录功能,通过查阅相关资料,打算用session监听来做,下面给大家列出了配置 * 的方法:1.在项目