如何生成Google-service.json 文件,新建assert目录和读取以及gson文件解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 如何生成Google-service.json 文件,新建assert目录和读取以及gson文件解析

Json和GSON区别



json是一种数据格式,便于数据传输、存储、交换。

gson是一种组件库,可以把java对象数据转换成json数据格式。


Json是什么



GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java转化为Json字符串。


特点:


快速、高效 代码量少、简洁 面向对象 数据传递和解析方便 创建方式:Gson gson = new gson();


Gson提供了public String toJson(Objcet obj)方法,可以将对象转化为json字符串。 Json是一种数据格式,便于数据传输、存储、交换;

Gson是一种组件库,可以把java对象数据转换成json数据格式。


如何生成Google-service.json 文件。


打开你的fieabase网址:console.firebase.google.com/u/0/

你应该有自己的项目地址。


创建一个新的项目,或者在你已经有的项目中加入新的app都可以。这个gson文件都是根据你的包名去生成的。在一个项目中可以加很多的App生成的json文件是根据项目去生成的,一个项目有多个app,在你生成的json文件中会有不项目中所有app的配置,当一个项目只有一个App的时候,在json文件中只有一个app的配置。


1.新建assert文件目录。


方式很所,在这我仅仅提供最便捷的一种。选中app目录右键, new  ,Floder   ,Assert Floder。这样就行了。


public File [] getAssetPicPath(Context context) {
        AssetManager am = context.getAssets();
        String[] path = null;
        try {
            path = am.list("");  // ""获取所有,填入目录获取该目录下所有资源
        } catch (IOException e) {
            e.printStackTrace();
        }
        File [] pciPaths =new File[11];
        for (int i = 0; i < path.length; i++) {
            if ((path[i].endsWith(".txt") || path[i].endsWith(".jpg")) && path[i].startsWith("sy")) {  // 根据图片特征找出图片
                File file = new File(path[i]);
                pciPaths[i]=file;
            }
        }
        return pciPaths;
    }

2.GSon文件解析:


首先依赖包,在app 的gradle中加入:


compile 'com.squareup.retrofit2:converter-gson:2.2.0'  


String defaultCode = getJson("call2_ad.json", this);
Gson gson = new Gson();
//把JSON格式的字符串转为List
List<CodeBean> list = gson.fromJson(defaultCode, new TypeToken<List<CodeBean>>() {
}.getType());

public static String getJson(String fileName, Context context) {
    //将json数据变成字符串
    StringBuilder stringBuilder = new StringBuilder();
    try {
        //获取assets资源管理器
        AssetManager assetManager = context.getAssets();
        //通过管理器打开文件并读取
        BufferedReader bf = new BufferedReader(new InputStreamReader(assetManager.open(fileName), "utf-8"));
        String line;
        while ((line = bf.readLine()) != null) {
            stringBuilder.append(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return stringBuilder.toString();
}

只要是将assert目录中的文件用assetmanager进行文件解析转换成List就行了。


public class CodeBean {
    private String country_code;
    private List<AdCountBean> ad_count;
    private int start_time;
    private int end_time;
    public String getCountry_code() {
        return country_code;
    }
    public void setCountry_code(String country_code) {
        this.country_code = country_code;
    }
    public List<AdCountBean> getAd_count() {
        return ad_count;
    }
    public void setAd_count(List<AdCountBean> ad_count) {
        this.ad_count = ad_count;
    }
    public int getStart_time() {
        return start_time;
    }
    public void setStart_time(int start_time) {
        this.start_time = start_time;
    }
    public int getEnd_time() {
        return end_time;
    }
    public void setEnd_time(int end_time) {
        this.end_time = end_time;
    }
}

public class AdCountBean {
    /**
     * home : 20
     * exit : 20
     * apply_theme : 20
     * call_deatail : 20
     * cloud : 3
     * theme : 0
     * dialog_time : 30
     * dialog_need_ad : true
     */
    private int home;
    @SerializedName("exit")
    private int exit_;
    private int apply_theme;
    @SerializedName("call_deatail")
    private int call_deatail_;
    @SerializedName("cloud")
    private int cloud_;
    @SerializedName("theme")
    private int theme_;
    @SerializedName("dialog_time")
    private int dialog_time_;
    @SerializedName("dialog_need_ad")
    private boolean dialog_need_ad;
    public int getHome() {
        return home;
    }
    public void setHome(int home) {
        this.home = home;
    }
    public int getExit_() {
        return exit_;
    }
    public void setExit_(int exit_) {
        this.exit_ = exit_;
    }
    public int getCloud_() {
        return cloud_;
    }
    public void setCloud_(int cloud_) {
        this.cloud_ = cloud_;
    }
    public int getDialog_time_() {
        return dialog_time_;
    }
    public void setDialog_time_(int dialog_time_) {
        this.dialog_time_ = dialog_time_;
    }
    public int getApply_theme() {
        return apply_theme;
    }
    public void setApply_theme(int apply_theme) {
        this.apply_theme = apply_theme;
    }
    public int getCall_deatail_() {
        return call_deatail_;
    }
    public void setCall_deatail_(int call_deatail_) {
        this.call_deatail_ = call_deatail_;
    }
    public int getTheme_() {
        return theme_;
    }
    public void setTheme_(int theme_) {
        this.theme_ = theme_;
    }
    public boolean isDialog_need_ad() {
        return dialog_need_ad;
    }
    public void setDialog_need_ad(boolean dialog_need_ad) {
        this.dialog_need_ad = dialog_need_ad;
    }
    @Override
    public String toString() {
        return "AdCountBean{" +
                "home=" + home +
                ", exit=" + exit_ +
                ", apply_theme=" + apply_theme +
                ", call_deatail=" + call_deatail_ +
                ", cloud=" + cloud_ +
                ", theme=" + theme_ +
                ", dialog_time=" + dialog_time_ +
                ", dialog_need_ad=" + dialog_need_ad +
                '}';
    }
}

你自己打印log看看就知道了,这是我目前的理解。



目录
相关文章
|
3月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
140 2
|
4月前
|
JSON 算法 vr&ar
目标检测笔记(五):查看通过COCOEvaluator生成的coco_instances_results.json文件的详细检测信息,包含AP、AR、MR和DR等
本文介绍了如何使用COCO评估器通过Detectron2库对目标检测模型进行性能评估,生成coco_instances_results.json文件,并利用pycocotools解析该文件以计算AP、AR、MR和DR等关键指标。
284 1
目标检测笔记(五):查看通过COCOEvaluator生成的coco_instances_results.json文件的详细检测信息,包含AP、AR、MR和DR等
|
25天前
|
开发工具 git 索引
怎么取消对project.private.config.json这个文件的git记录
通过以上步骤,您可以成功取消对 `project.private.config.json`文件的Git记录。这样,文件将不会被包含在未来的提交中,同时仍保留在您的工作区中。
60 28
|
6天前
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
15 0
|
2月前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
286 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
1月前
|
Serverless 对象存储 人工智能
智能文件解析:体验阿里云多模态信息提取解决方案
在当今数据驱动的时代,信息的获取和处理效率直接影响着企业决策的速度和质量。然而,面对日益多样化的文件格式(文本、图像、音频、视频),传统的处理方法显然已经无法满足需求。
104 4
智能文件解析:体验阿里云多模态信息提取解决方案
|
4月前
|
自然语言处理 数据处理 Python
python操作和解析ppt文件 | python小知识
本文将带你从零开始,了解PPT解析的工具、工作原理以及常用的基本操作,并提供具体的代码示例和必要的说明【10月更文挑战第4天】
710 60
|
3月前
|
消息中间件 存储 Java
RocketMQ文件刷盘机制深度解析与Java模拟实现
【11月更文挑战第22天】在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、日志流处理等场景。为了保证消息的可靠性,RocketMQ引入了一种称为“刷盘”的机制,将消息从内存写入到磁盘中,确保消息持久化。本文将从底层原理、业务场景、概念、功能点等方面深入解析RocketMQ的文件刷盘机制,并使用Java模拟实现类似的功能。
82 3
|
3月前
|
存储
文件太大不能拷贝到U盘怎么办?实用解决方案全解析
当我们试图将一个大文件拷贝到U盘时,却突然跳出提示“对于目标文件系统目标文件过大”。这种情况让人感到迷茫,尤其是在急需备份或传输数据的时候。那么,文件太大为什么会无法拷贝到U盘?又该如何解决?本文将详细分析这背后的原因,并提供几个实用的方法,帮助你顺利将文件传输到U盘。
|
4月前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
116 1

推荐镜像

更多