Json3种解析方式
1.导包
implementation 'com.google.code.gson:gson:2.8.6'implementation 'com.alibaba:fastjson:1.2.73'
2.使用
package com.example.imageloader2;import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.LinearLayout;import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import com.google.gson.JsonObject;import org.json.JSONObject;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;public class ThirdActivity extends AppCompatActivity {private static final String TAG = "ThirdActivity";private LinearLayout linearLayout;String data = "{\n" +" \"paramz\": {\n" +" \"feeds\": [\n" +" {\n" +" \"id\": 299076,\n" +" \"oid\": 288340,\n" +" \"category\": \"article\",\n" +" \"data\": {\n" +" \"subject\": \"荔枝新闻3.0:不止是阅读\",\n" +" \"summary\": \"江苏广电旗下资讯类手机应用“荔枝新闻”于近期推出全新升级换代的3.0版。\",\n" +" \"cover\": \"/Attachs/Article/288340/3e8e2c397c70469f8845fad73aa38165_padmini.JPG\",\n" +" \"pic\": \"\",\n" +" \"format\": \"txt\",\n" +" \"changed\": \"2015-09-22 16:01:41\"\n" +" }\n" +" }\n" +" ],\n" +" \"PageIndex\": 1,\n" +" \"PageSize\": 20,\n" +" \"TotalCount\": 53521,\n" +" \"TotalPage\": 2677\n" +" }\n" +"}\n";String data2 = "{\n" +" \"homeadlist\": [\n" +" {\n" +" \"id\": 1,\n" +" \"imgurl\": \"/img/homead/a73b3f1d-0f14-429d-9d0f-70643fb0f0eb.jpg\",\n" +" \"jumpflag\": 0,\n" +" \"jumpurl\": \"\",\n" +" \"posflag\": 1,\n" +" \"remark\": \"1111\",\n" +" \"cityid\": 1\n" +" },\n" +" {\n" +" \"id\": 12,\n" +" \"imgurl\": \"/img/homead/eb442fbf-49db-4ba6-a102-d781505f426d.jpg\",\n" +" \"jumpflag\": 0,\n" +" \"jumpurl\": \"\",\n" +" \"posflag\": 2,\n" +" \"remark\": \"\",\n" +" \"cityid\": 1\n" +" },\n" +" {\n" +" \"id\": 14,\n" +" \"imgurl\": \"/img/homead/68109460-635d-4c5c-8be8-64d7c7889d18.jpg\",\n" +" \"jumpflag\": 0,\n" +" \"jumpurl\": \"http://shiranlife.kuaizhan.com/\",\n" +" \"posflag\": 4,\n" +" \"remark\": \"\",\n" +" \"cityid\": 1\n" +" }\n" +" ]\n" +"}\n";@SuppressLint("SetJavaScriptEnabled")@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);linearLayout = new LinearLayout(this);WebView webView = new WebView(this);WebSettings settings = webView.getSettings();//让webView支持JSsettings.setJavaScriptEnabled(true);//加载百度网页webView.loadUrl("https://www.baidu.com");LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);lp.setMargins(50, 50, 50, 50);webView.setLayoutParams(lp);linearLayout.addView(webView);setContentView(linearLayout);List<HashMap<String, Object>> dataList = JsonUtils.getJsonList(data);for(HashMap map : dataList) {Log.d(TAG, "subject:"+map.get("subject")+", summary:"+ map.get("summary")+", cover:"+ map.get("cover"));}List<DataModel> dataList2 = JsonUtils.getJsonList2(data);for(DataModel model : dataList2) {Log.d(TAG, "22---subject:"+model.getSubject()+", summary:"+ model.getSummary()+", cover:"+ model.getCover());}//Gson解析Homead homead = new Gson().fromJson(data2, Homead.class);Log.d(TAG, "size-333:"+homead.getHomeadlist().size());for(Homead.HomeadlistBean bean : homead.getHomeadlist()) {Log.d(TAG, "getId:"+ bean.getId());}//fastJson解析Homead homead2 = JSON.parseObject(data2, Homead.class);Log.d(TAG, "size-444:"+homead.getHomeadlist().size());for(Homead.HomeadlistBean bean : homead.getHomeadlist()) {Log.d(TAG, "getId---222:"+ bean.getId());}Homead.HomeadlistBean bean1 = new Homead.HomeadlistBean(1, "q");Homead.HomeadlistBean bean2 = new Homead.HomeadlistBean(2, "w");Homead.HomeadlistBean bean3 = new Homead.HomeadlistBean(3, "e");Homead.HomeadlistBean bean4 = new Homead.HomeadlistBean(4, "r");List<Homead.HomeadlistBean> homeadlist = new ArrayList<>();homeadlist.add(bean1);homeadlist.add(bean2);homeadlist.add(bean3);homeadlist.add(bean4);Homead homead1 = new Homead();homead1.setHomeadlist(homeadlist);String h = JSON.toJSONString(homead1);Log.d(TAG, "h---555:"+ h);}
}
3.解析类
1)DataModel
package com.example.imageloader2;public class DataModel{public String subject;public String summary;public String cover;public String pic;public String format;public String changed;public void setSubject(String subject) {this.subject = subject;}public String getSubject() {return subject;}public void setSummary(String summary) {this.summary = summary;}public String getSummary() {return summary;}public void setCover(String cover) {this.cover = cover;}public String getCover() {return cover;}public void setPic(String pic) {this.pic = pic;}public String getPic() {return pic;}public void setFormat(String format) {this.format = format;}public String getFormat() {return format;}public void setChanged(String changed) {this.changed = changed;}public String getChanged() {return changed;}}
2)Homead
package com.example.imageloader2;import java.io.Serializable;
import java.util.List;public class Homead {public List<HomeadlistBean> getHomeadlist() {return homeadlist;}private List<HomeadlistBean> homeadlist;public void setHomeadlist(List<HomeadlistBean> homeadlist) {this.homeadlist = homeadlist;}public static class HomeadlistBean {public HomeadlistBean() {}public String getRemark() {return remark;}public HomeadlistBean(int id, String remark) {this.id = id;this.remark = remark;}public int getId() {return id;}/*** id : 1* imgurl : /img/homead/a73b3f1d-0f14-429d-9d0f-70643fb0f0eb.jpg* jumpflag : 0* jumpurl :* posflag : 1* remark : 1111* cityid : 1*/private int id;private String imgurl;private int jumpflag;private String jumpurl;private int posflag;private String remark;private int cityid;}
}
4.工具类
package com.example.imageloader2;import android.util.Log;import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;public class JsonUtils {private static final String TAG = "JsonUtils";/*** 系统的JSONObject, JSONArray*/public static List<HashMap<String, Object>> getJsonList(String json) {List<HashMap<String, Object>> dataList;dataList = new ArrayList<>();try {JSONObject rootObject = new JSONObject(json);JSONObject paramzObject = rootObject.getJSONObject("paramz");JSONArray feedsArray = paramzObject.getJSONArray("feeds");for (int i = 0; i < feedsArray.length(); i++) {JSONObject sonObject = feedsArray.getJSONObject(i);JSONObject dataObject = sonObject.getJSONObject("data");String subjectStr = dataObject.getString("subject");String summaryStr = dataObject.getString("summary");String coverStr = dataObject.getString("cover");HashMap<String, Object> map = new HashMap<>();map.put("subject", subjectStr);map.put("summary", summaryStr);map.put("cover", coverStr);dataList.add(map);}return dataList;} catch (JSONException e) {e.printStackTrace();}return null;}/*** Gson解析*/public static List<DataModel> getJsonList2(String json) {List<DataModel> dataList;dataList = new ArrayList<>();try {JSONObject rootObject = new JSONObject(json);JSONObject paramzObject = rootObject.getJSONObject("paramz");JSONArray feedsArray = paramzObject.getJSONArray("feeds");for (int i = 0; i < feedsArray.length(); i++) {JSONObject sonObject = feedsArray.getJSONObject(i);Log.d(TAG, "DATA:"+sonObject.getString("data"));DataModel model = new Gson().fromJson(sonObject.getString("data"), new TypeToken<DataModel>(){}.getType());dataList.add(model);}return dataList;} catch (JSONException e) {e.printStackTrace();}return null;}public static Homead getJsonList3(String json) {Homead homead = new Gson().fromJson(json, Homead.class);return homead;}
}
Json3种解析方式相关推荐
- php xml 四种,xml中常见的四种解析方式是什么?
xml解析方式有:1.DOM解析方法,可以对xml文档进行修改操作:2.SAX解析方法,解析速度快,占用内存少:3.JDOM解析方法,查找方便:4.DOM4J解析方法,解析XML的速度快. 在XML的 ...
- xml的三种解析方式
本篇博客重点介绍Android中三种解析XML的方式,包括PULL.SAX.DOM,当然不止这些,还可以用第三方的jar包提供的解析,只是这三种在Android中比较常用吧.再顺便介绍一下Androi ...
- JSON的两种解析方式
JSON的两种解析方式:Gson和Fastjson,下面来看下这两种解析方法怎样使用,并且他们有哪些区别. 1.Gson: Gson是谷歌的一款JSON解析工具. 功能①:将对象转化为JSON字符串 ...
- JSON的三种解析方式以及JSONObject、JSONArray区别
JSON的常用两种解析方式 一.什么是JSON? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串 ...
- xml的两种解析方式:sax,dom4j
两种解析方式的优缺点: sax解析:优点:不需要读取整个文件,并且将其储存在内从中,不耗费内存资源,才用触发监听的方式,文件读到哪里触发相应方法. 缺点:不能反复调用,每次解析 ...
- XML常用的几种解析方式
XML的解析方式有很多,光开源的就有十多种:如Xerces.JDOM.DOM4J.XOM.JiBX.KXML.XMLBeans.jConfig.XStream.XJR等. 更多免费教学文章请关注这里 ...
- xml文件的三种解析方式 DOM SAM PULL
<?xml version="1.0" encoding="UTF-8"?> <root><student id="1& ...
- XML常见的两种解析方式总结
XML解析方式 在程序开发过程中,经常需要对XML文档进行解析,常见套路往往是:XML文档–>XML解析器<–>API<–>应用程序.经常用到的解析方式如下: - DOM ...
- xml几种解析方式的优缺点
现在解析XML的主流的方法有DOM.SAX.JDOM和DOM4J 1.DOM [优点] ①应用程序可以其对数据和结构进行更改. ②访问是双向的,可以在任何时候在树中上下导航,获 ...
最新文章
- 算法基础知识科普:8大搜索算法之AVL树(下)
- 皮一皮:真的是方法不对吗?
- python如何导入txt文件-python如何导入txt数据库?
- Android4.2.2源码目录结构分析
- (~最新合集~)计算机网络谢希仁第七版 第二章课后答案
- 在hadoop/hbase等代码中kinit
- [python opencv 计算机视觉零基础到实战] 十二 直方图
- define定义的是什么类型_为什么Django 3后建议使用Field.choices枚举类型定义choices选项...
- PHP苹果不给上架,苹果商城上架拒绝
- redis专题:使用redis实现分布式锁
- ORACLE行转列通用过程(转)
- linux qt调用摄像头,Qt5下实现摄像头预览及捕获图像方法实例
- 语音处理的分帧,帧移,加窗,滤波,降噪,合成
- VMwarePro16 安装 Win7+BurpSuite
- 大数据技术之_16_Scala学习_11_客户信息管理系统+并发编程模型 Akka+Akka 网络编程-小黄鸡客服案例+Akka 网络编程-Spark Master Worker 进程通讯项目
- DDD之Repository模式
- element表格标题两行设置办法
- 鸿蒙 OS 的到来,能为我们改变什么?
- 如果可以随意 Emoji 组合,你能让两个表情包碰撞出什么花样?
- 第 270 场力扣周赛