国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Json 數據解析

2019-11-09 14:54:08
字體:
來源:轉載
供稿:網友

關于普通Json的大部分解析方法。此博客用于個人復習,歡迎批評

———-原生json解析—-

String json1 = "{/"name/":/"張三/",/"age/":20,/"sex/":/"男/"}";String json3 = "{/"bookname/":/"java速成/", /"——解析Object—解析完成后放入實體類中—-

String name = jsonobj.getString("name");int age = jsonobj.getInt("age");String sex = jsonobj.getString("sex");person.setName(name);person.setAge(age);person.setSex(sex);JSONObject jsonobj1 = new JSONObject(json3);String bookname= jsonobj1.getString("bookname");double price = jsonobj1.getDouble("price");books.setBookname(bookname);books.setPrice(price);person.setBooks(books);System.out.println(books);System.out.println(person);/*String json2 = "[/"蘋果/",/"栗子/",/"西瓜/"]";

——-解析JsonArray—

JSONArray jsonarray = new JSONArray(json2);List<String> list = new ArrayList<>();for(int i = 0; i<jsonarray.length();i++){ String str = jsonarray.getString(i); list.add(str);}System.out.println(list);*/

————–JsonObject 和JsonArray 的結合解析

String json4 = "{/"name/":/"李雷/", /"age/":16, /"books/":[{/"bookname/":/"Java入門到放棄/", /"price/":18.9}, {/"bookname/":/"C++領進門,從后門跑了/", /"price/":18.9}, {/"bookname/":/"android這個坑有多深/", /"price/":18.9}]}";JSONObject jsonObject = new JSONObject(json4);Student student = new Student();String name = jsonObject.getString("name");int age = jsonObject.getInt("age");List<Book> book = new ArrayList<>();JSONArray jsonArray = jsonObject.getJSONArray("books");for(int i = 0; i<jsonArray.length();i++){ Book books = new Book(); JSONObject jsonObject2 = jsonArray.getJSONObject(i); String bookname = jsonObject2.getString("bookname"); double pirce = jsonObject2.getDouble("price"); books.setBookname(bookname); books.setPicer(pirce); book.add(books);}student.setName(name);student.setAge(age);student.setList(book);System.out.println(student);

} ———————–下載Url到String—從接口中下載數據存到一個String類型的變量中

// 解析Url為Stringpublic static String getJSONByURL(String urlStr) {InputStream in = null;ByteArrayOutputStream out = null;try { URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); in = conn.getInputStream(); out = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } byte[] bs = out.toByteArray(); return new String(bs);} catch (Exception e) { e.printStackTrace();} finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } }}return null;

——————用Gson解析 首先要創建一個實體類,按照接口里面的格式來創建

String json1 = "{/"name/":/"張三/",/"age/":20,/"sex/":/"男/"}";//PersonString json2 = "[/"蘋果/", /"梨子/", /"香蕉/"]";//List<String>String json3 = "{/"bookname/":/"Java速成/", /"price/":18.6}";//解析json1Person ps = new Gson().fromJson(json1, Person.class);System.out.println(ps);//解析json2TypeToken<List<String>> tt = new TypeToken<List<String>>(){};List<String> list = new Gson().fromJson(json2, tt.getType());System.out.println(list);//解析json3Book book = new Gson().fromJson(json3, Book.class);System.out.println(book);String json4 = "{/"name/":/"李雷/", /"age/":16, /"books/":[{/"bookname/":/"Java入門到放棄/", /"price/":18.9}, {/"bookname/":/"C++領進門,從后門跑了/", /"price/":18.9}, {/"bookname/":/"android這個坑有多深/", /"price/":18.9}]}";Student studnent = new Gson().fromJson(json4, Student.class);System.out.println(studnent);

——-一個Gson 和json結合的例子:荔枝新聞解析 ——–荔枝新聞的接口,首先要用URl下載這個接口的數據到String 的json中

public static final String URL = "http://litchiapi.jstv.com/api/GetFeeds?column=0&PageSize=10&pageIndex=1&val=100511D3BE5301280E0992C73A9DEC41";public static void main(String[] args) throws JSONException {//下載JSONString json = HttpUtil.getJSONByURL(URL);//解析JSON --> List<New>List<NewsEntity> newsList = new ArrayList<>();JSONObject jsonObject = new JSONObject(json);String isok = jsonObject.getString("status");if(isok.equals("ok")){ //數據請求成功 JSONArray newsJsonArray = jsonObject.getJSONObject("paramz").getJSONArray("feeds");

———先用Json解析,下面再用Gson解析—–實體類一定要按照對應格式創建

for(int i = 0; i < newsJsonArray.length(); i++){ NewsEntity newsEntity = new NewsEntity(); JSONObject newObject = newsJsonArray.getJSONObject(i); //解析ID newsEntity.setId(newObject.getInt("id")); //解析標題 String subject = newObject.getJSONObject("data").getString("subject"); newsEntity.setSubject(subject); //解析簡介 String summary = newObject.getJSONObject("data").getString("summary"); newsEntity.setSummary(summary); //解析圖片 String cover = newObject.getJSONObject("data").getString("cover"); newsEntity.setCover(cover); //解析時間 String changed = newObject.getJSONObject("data").getString("changed"); newsEntity.setChanged(changed); newsList.add(newsEntity); }

—–下面是荔枝新聞的實體類,按照對應格式,然后選取需要的數據來創建

private int id;// 新聞idprivate String subject;// 新聞標題private String summary;// 新聞簡介private String cover;// 新聞圖片urlprivate String changed;// 新聞的最后修改時間public int getId() {return id;}public void setId(int id) {this.id = id;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getSummary() {return summary;}public void setSummary(String summary) {this.summary = summary;}public String getCover() {return cover;}public void setCover(String cover) {this.cover = cover;}public String getChanged() {return changed;}public void setChanged(String changed) {this.changed = changed;}@Overridepublic String toString() {return "NewsEntity [id=" + id + ", subject=" + subject + ", summary=" + summary + ", cover=" + cover + ", changed=" + changed + "]";}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 米林县| 永泰县| 江西省| 平凉市| 南城县| 林甸县| 云和县| 吉木乃县| 黄冈市| 宾阳县| 藁城市| 邳州市| 濮阳县| 仁化县| 犍为县| 独山县| 呼伦贝尔市| 荃湾区| 双流县| 益阳市| 蚌埠市| 山丹县| 新巴尔虎左旗| 武城县| 都兰县| 沛县| 九江市| 高要市| 新郑市| 嘉峪关市| 土默特左旗| 若尔盖县| 庄浪县| 海丰县| 五河县| 竹溪县| 石屏县| 轮台县| 拜泉县| 揭阳市| 长葛市|