小案例Josn字符串的生成

写了一个安卓的在线播放各个电视台的小demo,放在手机和电视上都能看,但资源写在string.xml里感觉挺low 还是转成json吧,维护起来方便些,或放在服务端也挺好,一个一个修改感觉好枯燥,就用代码吧 其实这个算很简单的,只是借此复习一下流的操作字符串分割以及json的生成json的解析 额外说一点:这里的播放源目前都是可用的哦,使用直播流的软件就能看相应的电视台了

本文任务是把下列data.txt解析成json格式:如
  {
    "name": "CCTV1 综合HD",
    "url": "http://112.50.243.7/PLTV/88888888/224/3221226489/index.m3u8",
    "mdTime": "2018-10-22"
  },

张风捷特烈.png

data.txt
<item>CCTV1 综合HD★http://112.50.243.7/PLTV/88888888/224/3221226489/index.m3u8</item>
<item>CCTV2 财经HD★http://112.50.243.7/PLTV/88888888/224/3221226554/index.m3u8</item>
<item>CCTV-3 综艺HD★http://183.207.249.5/PLTV/3/224/3221225588/index.m3u8</item>
<item>CCTV4 中文国际★http://112.50.243.7/PLTV/88888888/224/3221226511/index.m3u8</item>
<item>CCTV-5 体育HD★http://183.207.249.15/PLTV/3/224/3221225604/index.m3u8</item>
<item>CCTV-6 电影HD★http://183.207.249.15/PLTV/3/224/3221225548/index.m3u8</item>
<item>CCTV-7 军事与农业HD★http://183.207.249.15/PLTV/3/224/3221225546/index.m3u8</item>
<item>CCTV8 电视剧HD★http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221227204/index.m3u8</item>
<item>CCTV9 记录HD★http://112.50.243.7/PLTV/88888888/224/3221226566/index.m3u8</item>
<item>CCTV10 科教HD★http://112.50.243.7/PLTV/88888888/224/3221226488/index.m3u8</item>
<item>CCTV11 戏曲HD★http://112.50.243.7/PLTV/88888888/224/3221226493/index.m3u8</item>
<item>CCTV12 HD★http://112.50.243.7/PLTV/88888888/224/3221226623/index.m3u8</item>
<item>CCTV13 新闻HD★http://112.50.243.7/PLTV/88888888/224/3221226507/index.m3u8</item>
<item>CCTV14 少儿HD★http://112.50.243.7/PLTV/88888888/224/3221226497/index.m3u8</item>
<item>CCTV-15 音乐★http://183.207.249.7/PLTV/3/224/3221225568/index.m3u8</item>
<item>安徽卫视HD★http://183.207.249.15/PLTV/3/224/3221225634/index.m3u8</item>
<item>北京卫视HD★http://183.207.249.7/PLTV/3/224/3221225574/index.m3u8</item>
<item>湖南卫视 HD★http://223.110.243.173/PLTV/3/224/3221227220/index.m3u8</item>
<item>浙江卫视 HD★http://223.110.243.173/PLTV/3/224/3221227215/index.m3u8</item>
<item>青海卫视★http://183.207.249.7/PLTV/3/224/3221225580/index.m3u8</item>
<item>山东卫视★http://183.207.249.7/PLTV/3/224/3221225586/index.m3u8</item>
<item>江西卫视★http://183.207.249.15/PLTV/3/224/3221225537/index.m3u8</item>
<item>兵团卫视HD★http://v.btzx.com.cn:1935/live/weishi.stream/playlist.m3u8</item>
<item>东方卫视HD★http://111.48.34.182/huaweicdn.hb.chinamobile.com/PLTV/88888888/224/3221225810/1.m3u8?icpid=88888888&#038;from=1&#038;hms_devid=1143</item>
<item>河北卫视★http://183.207.249.7/PLTV/3/224/3221225602/index.m3u8</item>
<item>新疆卫视★http://183.207.249.15/PLTV/3/224/3221225523/index.m3u8</item>
<item>四川卫视★http://183.207.249.15/PLTV/3/224/3221225570/index.m3u8</item>
<item>西藏卫视★http://183.207.249.15/PLTV/3/224/3221225579/index.m3u8</item>
<item>爱情喜剧★http://183.207.249.15/PLTV/3/224/3221225525/index.m3u8</item>
<item>武林外传★http://dlhls.cdn.zhanqi.tv/zqlive/33765_6qakZ.m3u8</item>
<item>CNTV古装剧场★http://183.207.249.7/PLTV/3/224/3221225527/index.m3u8</item>
<item>动画王国HD★http://183.207.249.15/PLTV/3/224/3221225555/index.m3u8</item>
<item>海外剧场★http://183.207.249.15/PLTV/3/224/3221225547/index.m3u8</item>
<item>完美游戏★http://183.207.249.15/PLTV/3/224/3221225539/index.m3u8</item>
<item>电影轮播★http://112.50.243.7/PLTV/88888888/224/3221226670/index.m3u8</item>
<item>金鹰纪实HD★http://112.50.243.7/PLTV/88888888/224/3221226613/index.m3u8</item>

一、生成json字符串

0思路步骤:

1).新建一个maven管理的java项目,引入gson依赖 2).用文件读流+bufferd包装类一行一行读取data.txt,对每行的字符串切割 3).建一个实体类,每读一行将数据加载如实体类 4).将实体类集合输出成Json格式字符串,并通过文件写流+bufferd写出

1.新建一个maven管理的java项目,引入gson依赖
<!-- 为简化set,get,toString代码引入lombok -->
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.2</version>
    <scope>provided</scope>
</dependency>

<!--gson依赖-->
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.5</version>
</dependency>
2.文件操作(小demo,异常直接抛了)
public class OnlineVideo {
    public static void main(String[] args) throws IOException {
        //读取文件
        String path = "I:\\Java\\SpringBoot\\small_project\\src\\main\\resources\\data.txt";
        BufferedReader br = new BufferedReader(new FileReader(path));
        ArrayList<VideoBean> videoBeans = new ArrayList<VideoBean>();

        String line = "";
        while ((line = br.readLine()) != null) {
            String res = line.split(">")[1].split("<")[0];
            VideoBean videoBean = new VideoBean();
            videoBean.setName(res.split("★")[0]);
            videoBean.setUrl(res.split("★")[1]);
            videoBean.setMdTime(new SimpleDateFormat("YYYY-MM-dd").format(System.currentTimeMillis()));
            videoBeans.add(videoBean);
        }
        br.close();
        String json = new GsonBuilder().create().toJson(videoBeans);

        String target = "I:\\Java\\SpringBoot\\small_project\\src\\main\\resources\\data.json";
        FileWriter fileWriter = new FileWriter(target);
        fileWriter.write(json);
        fileWriter.close();
    }
}
3.data.json
[
  {
    "name": "CCTV1 综合HD",
    "url": "http://112.50.243.7/PLTV/88888888/224/3221226489/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "CCTV2 财经HD",
    "url": "http://112.50.243.7/PLTV/88888888/224/3221226554/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "CCTV-3 综艺HD",
    "url": "http://183.207.249.5/PLTV/3/224/3221225588/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "CCTV4 中文国际",
    "url": "http://112.50.243.7/PLTV/88888888/224/3221226511/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "CCTV-5 体育HD",
    "url": "http://183.207.249.15/PLTV/3/224/3221225604/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "CCTV-6 电影HD",
    "url": "http://183.207.249.15/PLTV/3/224/3221225548/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "CCTV-7 军事与农业HD",
    "url": "http://183.207.249.15/PLTV/3/224/3221225546/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "CCTV8 电视剧HD",
    "url": "http://223.110.245.167/ott.js.chinamobile.com/PLTV/3/224/3221227204/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "CCTV9 记录HD",
    "url": "http://112.50.243.7/PLTV/88888888/224/3221226566/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "CCTV10 科教HD",
    "url": "http://112.50.243.7/PLTV/88888888/224/3221226488/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "CCTV11 戏曲HD",
    "url": "http://112.50.243.7/PLTV/88888888/224/3221226493/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "CCTV12 HD",
    "url": "http://112.50.243.7/PLTV/88888888/224/3221226623/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "CCTV13 新闻HD",
    "url": "http://112.50.243.7/PLTV/88888888/224/3221226507/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "CCTV14 少儿HD",
    "url": "http://112.50.243.7/PLTV/88888888/224/3221226497/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "CCTV-15 音乐",
    "url": "http://183.207.249.7/PLTV/3/224/3221225568/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "安徽卫视HD",
    "url": "http://183.207.249.15/PLTV/3/224/3221225634/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "北京卫视HD",
    "url": "http://183.207.249.7/PLTV/3/224/3221225574/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "湖南卫视 HD",
    "url": "http://223.110.243.173/PLTV/3/224/3221227220/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "浙江卫视 HD",
    "url": "http://223.110.243.173/PLTV/3/224/3221227215/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "青海卫视",
    "url": "http://183.207.249.7/PLTV/3/224/3221225580/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "山东卫视",
    "url": "http://183.207.249.7/PLTV/3/224/3221225586/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "江西卫视",
    "url": "http://183.207.249.15/PLTV/3/224/3221225537/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "兵团卫视HD",
    "url": "http://v.btzx.com.cn:1935/live/weishi.stream/playlist.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "东方卫视HD",
    "url": "http://111.48.34.182/huaweicdn.hb.chinamobile.com/PLTV/88888888/224/3221225810/1.m3u8?icpid\u003d88888888\u0026#038;from\u003d1\u0026#038;hms_devid\u003d1143",
    "mdTime": "2018-10-22"
  },
  {
    "name": "河北卫视",
    "url": "http://183.207.249.7/PLTV/3/224/3221225602/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "新疆卫视",
    "url": "http://183.207.249.15/PLTV/3/224/3221225523/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "四川卫视",
    "url": "http://183.207.249.15/PLTV/3/224/3221225570/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "西藏卫视",
    "url": "http://183.207.249.15/PLTV/3/224/3221225579/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "爱情喜剧",
    "url": "http://183.207.249.15/PLTV/3/224/3221225525/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "武林外传",
    "url": "http://dlhls.cdn.zhanqi.tv/zqlive/33765_6qakZ.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "CNTV古装剧场",
    "url": "http://183.207.249.7/PLTV/3/224/3221225527/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "动画王国HD",
    "url": "http://183.207.249.15/PLTV/3/224/3221225555/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "海外剧场",
    "url": "http://183.207.249.15/PLTV/3/224/3221225547/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "完美游戏",
    "url": "http://183.207.249.15/PLTV/3/224/3221225539/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "电影轮播",
    "url": "http://112.50.243.7/PLTV/88888888/224/3221226670/index.m3u8",
    "mdTime": "2018-10-22"
  },
  {
    "name": "金鹰纪实HD",
    "url": "http://112.50.243.7/PLTV/88888888/224/3221226613/index.m3u8",
    "mdTime": "2018-10-22"
  }
]

二、安卓中的使用

可以放在服务器上,用网络访问,这里就放在assets目录下测试 添加依赖implementation 'com.google.code.gson:gson:2.2.4'

1.json解析的实体类
/**
 * 作者:张风捷特烈<br/>
 * 时间:2018/10/22 0022:21:03<br/>
 * 邮箱:1981462002@qq.com<br/>
 * 说明:json解析的实体类
 */
public class VideoBean {

 /**
     * name : CCTV1 综合HD
     * url : http://112.50.243.7/PLTV/88888888/224/3221226489/index.m3u8
     * mdTime : 2018-10-22
     */

    private String name;
    private String url;
    private String mdTime;

    public static VideoBean objectFromData(String str) {

        return new Gson().fromJson(str, VideoBean.class);
    }

    public static List<VideoBean> arrayVideoBeanFromData(String str) {

        Type listType = new TypeToken<ArrayList<VideoBean>>() {
        }.getType();

        return new Gson().fromJson(str, listType);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getMdTime() {
        return mdTime;
    }

    public void setMdTime(String mdTime) {
        this.mdTime = mdTime;
    }
2.读取data.json,解析成实体类集合
 String json = FileHelper.get().readInAssets(this, "data.json");
 List<VideoBean> videoBeans = VideoBean.arrayVideoBeanFromData(json);
3.用listView展示数据:
mIdLvVideo.setAdapter(new MyLVAdapter<VideoBean>(this, videoBeans, R.layout.item_text_only) {
    @Override
    public void setData(MyLVHolder holder, VideoBean data, int position) {
        holder.setText(R.id.id_tv_name, data.getName());
    }
});

listView.png


后记:捷文规范

1.本文成长记录及勘误表

项目源码

日期

备注

V0.1--无

2018-10-22

小案例Josn字符串的生成

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一个会写诗的程序员的博客

《Kotlin 反应式编程》使用 RxKotlin 实现一个极简的 http DSL ( Reactive Programming Using Rx Kotlin )《Kotlin 反应式编程》使用

我们现在已经基本知道 Kotlin 中 DSL 的样子了。但是这些 DSL 都是怎样实现的呢?本节我们就通过实现一个极简的http DSL来学习创建 DSL 背...

34720
来自专栏恰童鞋骚年

设计模式的征途—9.组合(Composite)模式

树形结构在软件中随处可见,比如操作系统中的目录结构,公司组织结构等等,如何运用面向对象的方式来处理这种树形结构是组合模式需要解决的问题。组合模式通过一种巧妙的设...

15540
来自专栏数据结构与算法

2594 解药还是毒药

时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果 题目描述 Description Smart研...

32650
来自专栏coding

python模拟狙击手射击恐怖分子

28460
来自专栏C语言及其他语言

【每日一题】问题 1108: 守望者的逃离

题目描述 恶魔猎手尤迫安野心勃勃.他背叛了暗夜精灵,率深藏在海底的那加企图叛变:守望者在与尤迪安的交锋中遭遇了围杀.被困在一个荒芜的大岛上。为了杀死守望者,尤...

39080
来自专栏java工会

一分钟搞明白java8中的lambda|文末红包

23750
来自专栏积累沉淀

Java设计模式(十三)----策略模式

策略模式 一、概述 二、策略模式的结构 三、具体案例 四、认识策略模式 一、概述 1.定义 策略模式属于对象行为型模式,主要针对一组算法...

23660
来自专栏软件开发

一种绝对提高开发水平的方法

如果做了多年开发的你发现自己的水平一直上不去,你可能要提高自己的英文水平了,英语就是你技术的瓶颈,对有些人可能是硬伤。

43440
来自专栏java架构学习交流

快速高效掌握企业级项目中的Spring面向切面编程应用,外带讲面试技巧

    Spring面向切面编程(AOP)是企业级应用的基石,可以这样说,如果大家要升级到高级程序员,这部分的知识必不可少。     这里我们将结合一些具体的案...

20890
来自专栏游戏开发那些事

【Unity游戏开发】Lua中的os.date和os.time函数

  最近马三在工作中经常使用到了lua 中的 os.date( ) 和 os.time( )函数,不过使用的时候都是不得其解,一般都是看项目里面怎么用,然后我就...

19940

扫码关注云+社区

领取腾讯云代金券