日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

不同格式的json解析

發布時間:2024/9/27 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不同格式的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; }

}`、

總結

以上是生活随笔為你收集整理的不同格式的json解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。