不同格式的json解析

文章目录

          • 一、基本数据格式
            • 1. 一个JSON对象
            • 2.一个JSON数组
            • 3.复杂JSONObject
            • 4. 复杂JSONArray
            • 5.更复杂的json
          • 二、解析
            • 2.1. JSONObject解析

一、基本数据格式

给服务端发送请求后,服务端会返回一连串的数据,这些数据在大部分情况下都是XML格式或者JSON格式。然后JSON相对XML来说解析相对方便一些,所以先说说JSON的解析。

JSON的基本数据格式有这几种:

1. 一个JSON对象

JSONObject

{"name": "胡小威","age": 20,"male": true
}
2.一个JSON数组

JSONArray


[{"name": "胡小威","age": 20,"male": true},{"name": "赵小亮","age": 22,"male": false}
]
3.复杂JSONObject

{"name": "胡小威","age": 20,"male": true,"address": {"street": "岳麓山南","city": "长沙","country": "中国"}
}
4. 复杂JSONArray
[{"name": "胡小威","age": 20,"male": true,"address": {"street": "岳麓山南","city": "长沙","country": "中国"}},{"name": "赵小亮","age": 22,"male": false,"address": {"street": "九州港","city": "珠海","country": "中国"}}
]
5.更复杂的json

爱帮公交上扒取的数据

{"buses": {"bus": [{"last_foot_dist": "0","time": "37","segments": {"segment": [{"line_name": "立珊专线(中南大学学生公寓-长沙火车站)","foot_dist": "362","stat_xys": "","stats": "岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);牛耳教育(南阳街口);韭菜园;曙光路口;长岛路口;长沙火车站","end_stat": "长沙火车站","line_xys": "","line_dist": "7535","start_stat": "岳麓山南"}]},"foot_dist": "362","dist": "7897"},{"last_foot_dist": "0","time": "41","segments": {"segment": [{"line_name": "旅1路(科教新村-长沙火车站)","foot_dist": "337","stat_xys": "","stats": "岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);蔡锷中路口;韭菜园;乔庄;曙光路口;长岛路口;五一东村;车站路口;长沙火车站","end_stat": "长沙火车站","line_xys": "","line_dist": "7822","start_stat": "岳麓山南"}]},"foot_dist": "337","dist": "8159"}]}
}
二、解析
2.1. JSONObject解析
{"name": "胡小威","age": 20,"male": true
}
package com.gblfy;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.gblfy.utils.FastJsonUtil;
import org.junit.Test;import java.util.List;public class JsonApplicationTests {//把JSON数据转换成指定的java对象@Testpublic void fastJsonTest() {Student st = new Student().builder().name("雨昕").age(2).build();String json = FastJsonUtil.getBeanToJson(st);System.out.println("********对象转Json*********");System.out.println("json ::" + json);System.out.println("********Json转对象*********");Student newst = FastJsonUtil.getJsonToBean(json, Student.class);System.out.println("Name ::" + newst.getName());System.out.println("Age ::" + newst.getAge());}//解析JsonObject@Testpublic void parseJsonObject() {try {String json = "{\n" +"    \"name\": \"胡小威\",\n" +"    \"age\": 20,\n" +"    \"male\": true\n" +"}";System.out.println("*********单纯的从json数据中获取对应的值*********");JSONObject jb = JSON.parseObject(json);String name = jb.getString("name");int age = jb.getInteger("age");boolean male = jb.getBoolean("male");System.out.println("name:" + name);System.out.println("age:" + age);System.out.println("male:" + male);System.out.println("*********把JSON数据转换成指定的java对象*********");Student st = FastJsonUtil.getJsonToBean(json, Student.class);System.out.println("*********Student*********");System.out.println("name:" + st.getName());System.out.println("age:" + st.getAge());System.out.println("male:" + st.isMale());//接下来该干嘛干嘛} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//解析JSONArray@Testpublic void parseJSONArray() {String json = "[\n" +"    {\n" +"        \"name\": \"胡小威\",\n" +"        \"age\": 20,\n" +"        \"male\": true\n" +"    },\n" +"    {\n" +"        \"name\": \"赵小亮\",\n" +"        \"age\": 22,\n" +"        \"male\": false\n" +"    }\n" +"]";try {System.out.println("*********把JSON数据转换成指定的java对象列表*********");List<Student> jsonToList = FastJsonUtil.getJsonToList(json, Student.class);for (Student st : jsonToList) {System.out.println("name: " + st.getName());System.out.println("age: " + st.getAge());System.out.println("male: " + st.isMale());}System.out.println("*********解析JSONArray*********");JSONArray jsonArray = JSON.parseArray(json);for (Object o : jsonArray) {Student st = (Student) o;System.out.println("name: " + st.getName());System.out.println("age: " + st.getAge());System.out.println("male: " + st.isMale());}//接下来该干嘛干嘛} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//解析复杂JSONObject@Testpublic void parseJsonPerson() {String json = "{\n" +"    \"name\": \"胡小威\",\n" +"    \"age\": 20,\n" +"    \"male\": true,\n" +"    \"address\": {\n" +"        \"street\": \"岳麓山南\",\n" +"        \"city\": \"长沙\",\n" +"        \"country\": \"中国\"\n" +"    }\n" +"}";try {JSONObject jb = JSON.parseObject(json);String name = jb.getString("name");int age = jb.getInteger("age");boolean male = jb.getBoolean("male");JSONObject addressJSON = jb.getJSONObject("address");String street = addressJSON.getString("street");String city = addressJSON.getString("city");String country = addressJSON.getString("country");Address address = new Address(street, city, country);Student student = new Student(name, age, male, address);System.out.println("name: " + name);System.out.println("age: " + age);System.out.println("male: " + male);System.out.println("street: " + street);System.out.println("city: " + city);System.out.println("country: " + country);} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//解析复杂JSONArray@Testpublic void parseJsonArrayPerson() {String json="[\n" +"    {\n" +"        \"name\": \"胡小威\",\n" +"        \"age\": 20,\n" +"        \"male\": true,\n" +"        \"address\": {\n" +"            \"street\": \"岳麓山南\",\n" +"            \"city\": \"长沙\",\n" +"            \"country\": \"中国\"\n" +"        }\n" +"    },\n" +"    {\n" +"        \"name\": \"赵小亮\",\n" +"        \"age\": 22,\n" +"        \"male\": false,\n" +"        \"address\": {\n" +"            \"street\": \"九州港\",\n" +"            \"city\": \"珠海\",\n" +"            \"country\": \"中国\"\n" +"        }\n" +"    }\n" +"]";try {System.out.println("*********把JSON数据转换成指定的java对象列表*********");List<Student> jsonToList = FastJsonUtil.getJsonToList(json, Student.class);for (Student st : jsonToList) {System.out.println("name: " + st.getName());System.out.println("age: " + st.getAge());System.out.println("male: " + st.isMale());Address address = st.getAddress();System.out.println("street: " + address.getStreet());System.out.println("city: " + address.getCity());System.out.println("country: " + address.getCountry());Student student = new Student(st.getName(), st.getAge(), st.isMale(), address);System.out.println("student"+student.toString());}} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Testpublic void parseJSON(){String json="{\n" +"    \"buses\": {\n" +"        \"bus\": [\n" +"            {\n" +"                \"last_foot_dist\": \"0\",\n" +"                \"time\": \"37\",\n" +"                \"segments\": {\n" +"                    \"segment\": [\n" +"                        {\n" +"                            \"line_name\": \"立珊专线(中南大学学生公寓-长沙火车站)\",\n" +"                            \"foot_dist\": \"362\",\n" +"                            \"stat_xys\": \"\",\n" +"                            \"stats\": \"岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);牛耳教育(南阳街口);韭菜园;曙光路口;长岛路口;长沙火车站\",\n" +"                            \"end_stat\": \"长沙火车站\",\n" +"                            \"line_xys\": \"\",\n" +"                            \"line_dist\": \"7535\",\n" +"                            \"start_stat\": \"岳麓山南\"\n" +"                        }\n" +"                    ]\n" +"                },\n" +"                \"foot_dist\": \"362\",\n" +"                \"dist\": \"7897\"\n" +"            },\n" +"            {\n" +"                \"last_foot_dist\": \"0\",\n" +"                \"time\": \"41\",\n" +"                \"segments\": {\n" +"                    \"segment\": [\n" +"                        {\n" +"                            \"line_name\": \"旅1路(科教新村-长沙火车站)\",\n" +"                            \"foot_dist\": \"337\",\n" +"                            \"stat_xys\": \"\",\n" +"                            \"stats\": \"岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);蔡锷中路口;韭菜园;乔庄;曙光路口;长岛路口;五一东村;车站路口;长沙火车站\",\n" +"                            \"end_stat\": \"长沙火车站\",\n" +"                            \"line_xys\": \"\",\n" +"                            \"line_dist\": \"7822\",\n" +"                            \"start_stat\": \"岳麓山南\"\n" +"                        }\n" +"                    ]\n" +"                },\n" +"                \"foot_dist\": \"337\",\n" +"                \"dist\": \"8159\"\n" +"            }\n" +"        ]\n" +"    }\n" +"}";try {JSONObject jb = JSON.parseObject(json);String buses = jb.getString("buses");JSONObject jb2 = JSON.parseObject(buses);String bus2 = jb2.getString("bus");List<BusChild> bus = JSON.parseArray(bus2, BusChild.class);for (BusChild busChild : bus) {List<Segment> segmentList = busChild.getSegments();for (Segment segment : segmentList) {}}// String bus = jb.getString("bus");// Bus bus = FastJsonUtil.getJsonToBean(buses, Bus.class);// BusChild busChild = bus.getBusChild();// List<Segment> segments = busChild.getSegments();// for (Segment segment : segments) {//// }// List<BusChild> busChildList = FastJsonUtil.getJsonToList(buses, BusChild.class);// for (BusChild busChild : busChildList) {//     List<Segment> segmentList = busChild.getSegments();//     for (Segment segment : segmentList) {////     }// }//// JSONObject jb2 = JSON.parseObject(buses);//// String bus = jb2.getString("bus");// JSONObject jb3 = JSON.parseObject(bus);// String segments = jb3.getString("segments");//// List<Segment> jsonToList = FastJsonUtil.getJsonToList(segments, Segment.class);//// for (Segment segment : jsonToList) {//// }// for (BusChild busChild : jsonToList) {//     System.out.println(""+busChild.getLastFootDist());//     System.out.println(""+busChild.getTime());//     System.out.println(""+busChild.getFootDist());//     System.out.println(""+busChild.getDist());////     List<Segments> segmentsList = busChild.getSegments();//     for (Segments segment : segmentsList) {//         System.out.println("line_name: "+segment.getLineName());//         System.out.println("foot_dist: "+segment.getFootDist());//         System.out.println("stat_xys: "+segment.getStatXys());//         System.out.println("stats: "+segment.getStats());//         System.out.println("end_stat: "+segment.getEndStat());//         System.out.println("line_xys: "+segment.getLineXys());//         System.out.println("line_dist: "+segment.getLineDist());//         System.out.println("start_stat: "+segment.getStartStat());//     }//// }} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//序列化时指定json的key值public static void main(String[] args) {Segment build = new Segment().builder().foot_dist("123").start_stat("456").stats("2").build();System.out.println("sss"+JSON.toJSONString(build));}
}

`package com.gblfy.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.TypeReference;

import java.util.List;
import java.util.Map;

public class FastJsonUtil {

/*** 功能描述:把JSON数据转换成指定的java对象** @param jsonData JSON数据* @param clazz    指定的java对象* @return 指定的java对象*/
public static <T> T getJsonToBean(String jsonData, Class<T> clazz) {return JSON.parseObject(jsonData, clazz);
}/*** 功能描述:把java对象转换成JSON数据** @param object java对象* @return JSON数据*/
public static String getBeanToJson(Object object) {return JSON.toJSONString(object);
}/*** 功能描述:把JSON数据转换成指定的java对象列表** @param jsonData JSON数据* @param clazz    指定的java对象* @return List<T>*/
public static <T> List<T> getJsonToList(String jsonData, Class<T> clazz) {return JSON.parseArray(jsonData, clazz);
}/*** 功能描述:把JSON数据转换成较为复杂的List<Map<String, Object>>** @param jsonData JSON数据* @return List<Map < String, Object>>*/
public static List<Map<String, Object>> getJsonToListMap(String jsonData) {return JSON.parseObject(jsonData, new TypeReference<List<Map<String, Object>>>() {});
}/*** List<T> 转 json 保存到数据库*/
public static <T> String listToJson(List<T> ts) {String jsons = JSON.toJSONString(ts);return jsons;
}/*** 两个类之间值的转换* 从object》》tClass** @param object 有数据的目标类* @param tClass 转换成的类* @param <T>* @return 返回tClass类*/
public static <T> T getObjectToClass(Object object, Class<T> tClass) {String json = getBeanToJson(object);return getJsonToBean(json, tClass);
}/*** json 转 List<T>*/
public static <T> List<T> jsonToList(String jsonString, Class<T> clazz) {@SuppressWarnings("unchecked")List<T> ts = JSONArray.parseArray(jsonString, clazz);return ts;
}

}`、

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

axios安装使用

1.进入项目运行命令&#xff0c;原因同v-resource安装 cnpm install axios --save 2.在需要使用时引入 如&#xff1a; 使用按照gitubs上提供的示例做就可以了

首次曝光 | 阿里数万名开发者都在使用的数据库开发工具到底长什么样?

除了基础的数据查询开发功能&#xff0c;DMS还内置SQL审核、性能诊断优化、测试数据自动生成、多环境数据对比同步、数据库日志追踪回滚、不锁表变更、访问控制、敏感数据脱敏、安全审计等高端功能。 1、丰富的数据源 &#x1f538;丰富的数据库类型支持&#xff08;当前已超…

MySQL5.7.x 安装 Linux7环境

文章目录一、软件安装1. 下载2. 解压3.安装4. 跳过权限5. 启动mysql服务端6. 设置密码7. 允许远程连接8.开发3306端口二、安装报错方案一、软件安装 1. 下载 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.33-1.el7.x86_64.rpm-bundle.tarhttps://dev.…

智能用户增长神器QuickAudience开启公共云公测,助力企业业务增长

摘要&#xff1a;日前&#xff0c;由阿里数据打造的智能用户增长QuickAudience&#xff0c;重磅上线阿里云-公共云&#xff0c;开启公测&#xff01;该产品旨在围绕着品牌消费资产&#xff0c;通过丰富的用户洞察模型和便捷的策略配置&#xff0c;完成消费者多维洞察分析和多渠…

使用ant design vue 中table组件运行时not found: Error: Can't resolve 'reqwest' in 'D:\vue\antd-demo01\src\com

最近使用table时按照官网api使用table报了上面这个错误 1.只需要安装无法找到文件就可以正常运行了 2.命令行cd进入项目文件 3.运行npm install --save reqwest table就出来了

Serverless Kubernetes 入门:对 Kubernetes 做减法

导读&#xff1a;Serverless Kubernetes 是阿里云容器服务团队对未来 Kubernetes 演进方向的一种探索&#xff0c;通过对 Kubernetes 做减法&#xff0c;降低运维管理负担&#xff0c;简化集群管理&#xff0c;让 Kubernetes 从复杂到简单。 背景 Kubernetes 作为通用的容器编…

硬核“毕业证”:5 位本科生带自研处理器芯片毕业,包云岗解读“一生一芯”计划...

作者 | 包云岗责编 | 伍杏玲本文经作者授权转载自包云岗知乎【编者按】近日&#xff0c;中国科学院大学五位本科生的硬核“毕业证”引发IT圈热议&#xff0c;在“一生一芯”培养计划下&#xff0c;由五位2016级本科生主导完成一款64位RISC-V处理器SoC芯片设计并实现流片&#x…

如何打造“智能助理”?阿里对话开发平台这样做

阿里妹导读&#xff1a;一个合格的智能助理能够帮你预约开会时间&#xff0c;处理日常办公需求&#xff0c;还能打电话提醒你要还信用卡了&#xff0c;作为用户或者消费者&#xff0c;我们已经越来越习惯对话机器人提供的各色服务。但对于企业来讲&#xff0c;搭建提供这些服务…

关于vue中使用iconfont

1.进入iconfont图标库 2.点击下载 3.将下载文件解压拷贝至项目assets文件夹下 4.在main.js中全局引入 import ./assets/iconfont/iconfont.css5.在App.vue中使用 <span class"icon iconfont icon-****"></span>今天使用过程中按照这个导入还是一直会…

openoffice 安装 linux环境

文章目录一、安装配置启动1. 下载软件2. 上传文件3. 解压4. 安装rpm文件5. 安装openoffice6. 前台启动7. 后台启动8. 查看启动状态二、openoffice卸载与异常2.1. 删除openoffice2.2. 启动异常2.2. 解决方案2.3. 启动异常22.3. 解决方案2一、安装配置启动 1. 下载软件 https:/…

阿里巴巴大规模应用Flink的踩坑经验:如何大幅降低 HDFS 压力?

众所周知 Flink 是当前广泛使用的计算引擎&#xff0c;Flink 使用 checkpoint 机制进行容错处理[1]&#xff0c;Flink 的 checkpoint 会将状态快照备份到分布式存储系统&#xff0c;供后续恢复使用。在 Alibaba 内部我们使用的存储主要是 HDFS&#xff0c;当同一个集群的 Job 到…

云原生领域首本架构白皮书,你Get到了吗?

来源 | 《云原生架构白皮书》【导读】近日&#xff0c;由阿里云 20 位云原生技术专家共同编撰的《云原生架构白皮书》正式对外发布。作为业界第一本全方位构建云原生架构规划与实践全景图的白皮书&#xff0c;本书在详细阐述云原生架构定义的同时&#xff0c;完整展示云原生架构…

让机器读懂视频:亿级淘宝视频背后的多模态AI算法揭秘

背景 随着4G的普及和5G的推出&#xff0c;内容消费的诉求越来越受到人们的重视。2019年互联网趋势报告指出在移动互联网行业整体增速放缓的大背景下&#xff0c;短视频行业异军突起&#xff0c;成为“行业黑洞”抢夺用户时间&#xff0c;尽管移动互联网人口红利见顶&#xff0…

非vue子页面 调用vue父页面方法

由于要使用之前项目使用的页面&#xff0c;需要从非vue iframe子页面调用vue项目 1.父页面 <iframe :src"value.urlPath" frameborder"0" width"900px" height"500px"></iframe>methods: {add(type,name,url){//console.l…

SpringBoot 指定静态资源路径

可单独指定Mapping&#xff0c;不动用default配置。 1.配置类代码实现&#xff08;常见&#xff09; 低版本 Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter {Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) { …

如何成为一个很厉害的工程师

有很多人&#xff0c;包括我也困惑的一个问题&#xff0c;就是如何成为一个很厉害的工程师。类似的问题也有很多&#xff0c;如何成为一个很厉害的运营&#xff0c;如何成为一个很厉害的产品&#xff0c;或者跨行业的&#xff0c;如何成为一个很厉害的医生&#xff0c;如何成为…

“崩溃!我再也不搞 AI 了”谷歌 AI 专家:别让你的方法打败你!

今天&#xff0c;想跟大家聊聊 Python 人工智能。最近几年&#xff0c;我看过市面上很多 Python和人工智能的教程&#xff0c;基本都是先介绍Python基本语法、dict、tuple 等基本库的使用&#xff0c;最后学习机器学习、深度学习的常用算法......但我与 Google 人工智能开发专家…

解决jodconverter 2.2.1 版本不支持docx、xlsx、pptx 转换成PDF格式异常

文章目录一、基础对比1.版本对比2.异常现象二、分析定位2.1. 找异常输出处2.2. 找异常源头2.3. api源头三、实现流程3.1. 思路3.2. 新建包重写类3.3. 完整类一、基础对比 1.版本对比 03版本office07版本及高版本office.doc.docx.xls.xlsx.ppt.pptx 2.异常现象 搭建好 Spring…

突破边界局限,阿里云神龙负责人张献涛分享15年虚拟化之路

2020年1月8日&#xff0c;弹性计算服务技术总负责人张献涛受邀出席“面对面 见未来”的沙龙分享活动&#xff0c;现场听众主要是银行、保险、证券等金融行业的CTO、CIO等。 演讲开始前&#xff0c;听众们了解神龙云服务器的并不多。在听完张献涛的介绍后&#xff0c;他们对神龙…

vue Draggable实现拖动改变顺序

npm install vuedraggable import draggable from vuedraggable 示例代码 Test.vue <template><ul class"sort-ul"><div>45454</div><draggable group"article" :value"sortArr" input"handleListChange(…