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();

        }
复制代码

 

posted @   陌风陌风  阅读(348)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示