网站文站加入别人网站的链接是否对自己网站不好,设计周,跟公司产品做网站,大同网站设计文章目录一、基本数据格式1. 一个JSON对象2.一个JSON数组3.复杂JSONObject4. 复杂JSONArray5.更复杂的json二、解析2.1. JSONObject解析一、基本数据格式
给服务端发送请求后#xff0c;服务端会返回一连串的数据#xff0c;这些数据在大部分情况下都是XML格式或者JSON格式。…
文章目录一、基本数据格式1. 一个JSON对象2.一个JSON数组3.复杂JSONObject4. 复杂JSONArray5.更复杂的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());}//解析JsonObjectTestpublic 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();}}//解析JSONArrayTestpublic 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对象列表*********);ListStudent 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();}}//解析复杂JSONObjectTestpublic 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();}}//解析复杂JSONArrayTestpublic 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对象列表*********);ListStudent 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(studentstudent.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);ListBusChild bus JSON.parseArray(bus2, BusChild.class);for (BusChild busChild : bus) {ListSegment segmentList busChild.getSegments();for (Segment segment : segmentList) {}}// String bus jb.getString(bus);// Bus bus FastJsonUtil.getJsonToBean(buses, Bus.class);// BusChild busChild bus.getBusChild();// ListSegment segments busChild.getSegments();// for (Segment segment : segments) {//// }// ListBusChild busChildList FastJsonUtil.getJsonToList(buses, BusChild.class);// for (BusChild busChild : busChildList) {// ListSegment 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);//// ListSegment 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());//// ListSegments 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(sssJSON.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, ClassT 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 ListT*/
public static T ListT getJsonToList(String jsonData, ClassT clazz) {return JSON.parseArray(jsonData, clazz);
}/*** 功能描述把JSON数据转换成较为复杂的ListMapString, Object** param jsonData JSON数据* return ListMap String, Object*/
public static ListMapString, Object getJsonToListMap(String jsonData) {return JSON.parseObject(jsonData, new TypeReferenceListMapString, Object() {});
}/*** ListT 转 json 保存到数据库*/
public static T String listToJson(ListT 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, ClassT tClass) {String json getBeanToJson(object);return getJsonToBean(json, tClass);
}/*** json 转 ListT*/
public static T ListT jsonToList(String jsonString, ClassT clazz) {SuppressWarnings(unchecked)ListT ts JSONArray.parseArray(jsonString, clazz);return ts;
}}、