JSON数据的解析
json数据的解析,首先在idea中安装插件GsonFormat,
File--> settings --> pluging -->在上面点击Marketplace --> 搜索GsonFormat
如果还是搜索不到,就需要访问外网了,俗称FQ。
上面的步骤完成之后就是要导入依赖
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.4</version> </dependency>
导入依赖之后呢,我们需要使用GsonFormat生成一个类,
首先创建一个类,然后单击鼠标右键-->Generate --> GsonFormat -->然后把你要解析的json数据复制进去,点击ok
下面是我解析的数据:
{ "paramz": { "feeds": [ { "id": 299076, "oid": 288340, "category": "article", "data": { "subject": "荔枝新闻3.0:不止是阅读", "summary": "江苏广电旗下资讯类手机应用“荔枝新闻”于近期推出全新升级换代的3.0版。", "cover": "/Attachs/Article/288340/3e8e2c397c70469f8845fad73aa38165_padmini.JPG", "pic": "", "format": "txt", "changed": "2015-09-22 16:01:41" } } ], "PageIndex": 1, "PageSize": 20, "TotalCount": 53521, "TotalPage": 2677 } }
生成的类:
这里面有两个toString方法需要你再生成一次,不然拿到的是数据的地址
package java0; import java.util.List; public class Model { /** * paramz : {"feeds":[{"id":299076,"oid":288340,"category":"article","data":{"subject":"荔枝新闻3.0:不止是阅读","summary":"江苏广电旗下资讯类手机应用\u201c荔枝新闻\u201d于近期推出全新升级换代的3.0版。","cover":"/Attachs/Article/288340/3e8e2c397c70469f8845fad73aa38165_padmini.JPG","pic":"","format":"txt","changed":"2015-09-22 16:01:41"}}],"PageIndex":1,"PageSize":20,"TotalCount":53521,"TotalPage":2677} */ private ParamzBean paramz; public ParamzBean getParamz() { return paramz; } public void setParamz(ParamzBean paramz) { this.paramz = paramz; } public static class ParamzBean { /** * feeds : [{"id":299076,"oid":288340,"category":"article","data":{"subject":"荔枝新闻3.0:不止是阅读","summary":"江苏广电旗下资讯类手机应用\u201c荔枝新闻\u201d于近期推出全新升级换代的3.0版。","cover":"/Attachs/Article/288340/3e8e2c397c70469f8845fad73aa38165_padmini.JPG","pic":"","format":"txt","changed":"2015-09-22 16:01:41"}}] * PageIndex : 1 * PageSize : 20 * TotalCount : 53521 * TotalPage : 2677 */ private int PageIndex; private int PageSize; private int TotalCount; private int TotalPage; private List<FeedsBean> feeds; public int getPageIndex() { return PageIndex; } public void setPageIndex(int PageIndex) { this.PageIndex = PageIndex; } public int getPageSize() { return PageSize; } public void setPageSize(int PageSize) { this.PageSize = PageSize; } public int getTotalCount() { return TotalCount; } public void setTotalCount(int TotalCount) { this.TotalCount = TotalCount; } public int getTotalPage() { return TotalPage; } public void setTotalPage(int TotalPage) { this.TotalPage = TotalPage; } public List<FeedsBean> getFeeds() { return feeds; } public void setFeeds(List<FeedsBean> feeds) { this.feeds = feeds; } public static class FeedsBean { /** * id : 299076 * oid : 288340 * category : article * data : {"subject":"荔枝新闻3.0:不止是阅读","summary":"江苏广电旗下资讯类手机应用\u201c荔枝新闻\u201d于近期推出全新升级换代的3.0版。","cover":"/Attachs/Article/288340/3e8e2c397c70469f8845fad73aa38165_padmini.JPG","pic":"","format":"txt","changed":"2015-09-22 16:01:41"} */ private int id; private int oid; private String category; private DataBean data; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getOid() { return oid; } public void setOid(int oid) { this.oid = oid; } public String getCategory() { return category; } public void setCategory(String category) { this.category = category; } public DataBean getData() { return data; } public void setData(DataBean data) { this.data = data; } @Override public String toString() { return "FeedsBean{" + "id=" + id + ", oid=" + oid + ", category='" + category + '\'' + ", data=" + data + '}'; } public static class DataBean { /** * subject : 荔枝新闻3.0:不止是阅读 * summary : 江苏广电旗下资讯类手机应用“荔枝新闻”于近期推出全新升级换代的3.0版。 * cover : /Attachs/Article/288340/3e8e2c397c70469f8845fad73aa38165_padmini.JPG * pic : * format : txt * changed : 2015-09-22 16:01:41 */ private String subject; private String summary; private String cover; private String pic; private String format; private String changed; @Override public String toString() { return "DataBean{" + "subject='" + subject + '\'' + ", summary='" + summary + '\'' + ", cover='" + cover + '\'' + ", pic='" + pic + '\'' + ", format='" + format + '\'' + ", changed='" + changed + '\'' + '}'; } 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 getPic() { return pic; } public void setPic(String pic) { this.pic = pic; } public String getFormat() { return format; } public void setFormat(String format) { this.format = format; } public String getChanged() { return changed; } public void setChanged(String changed) { this.changed = changed; } } } } }
然后是如何读取你文件中的数据,我使用的是java的io流,这里要注意,使用字符流而不是字节流。
public class Read { public static void main(String[] args) { StringBuilder string=new StringBuilder(); try (Reader reader=new FileReader("D:\\data0\\jsondata.txt")){ char[] array = new char[100]; int length = 0; while ((length= reader.read(array)) !=-1){ String str=new String(array,0,length); string=string.append(str); //System.out.print(str); } }catch (Exception e){ e.printStackTrace(); }
读取完成之后我们开始对读取的json数据进行解析:
下面的代码跟到上面的代码下面就可以了:
//创建一个Gson对象
Gson gson=new Gson();
//对数据进行解析
Model model=gson.fromJson(String.valueOf(string),Model.class);
接下来就是我们如何拿到我们需要的数据:
对于paramz这一层的数据直接get就可以拿到:
System.out.println(model.getParamz().getPageSize());
对于freeds中,这是一个数组,我们需要便利它才可以拿到
List<Model.ParamzBean.FeedsBean> feeds = model.getParamz().getFeeds(); int id=0; String s=""; String n=""; for (Model.ParamzBean.FeedsBean m : feeds) { id = m.getId(); s=m.getData().getSubject(); n=m.getData().getSummary(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)