安卓加载asset中的json文件_Android解析Asset目录下的json文件

在app module中的src/main/assets目录下我们准备了两个json文件:

4c32a1ba5cf81c7aaeddb47f57ae945a.png

destination.json如下:

{

"main/tabs/sofa": {

"isFragment": true,

"asStarter": false,

"needLogin": false,

"pageUrl": "main/tabs/sofa",

"className": "com.test.ppjoke.ui.notifications.NotificationsFragment",

"id": 448706824

},

"main/tabs/dash": {

"isFragment": true,

"asStarter": false,

"needLogin": false,

"pageUrl": "main/tabs/dash",

"className": "com.test.ppjoke.ui.dashboard.DashboardFragment",

"id": 938694224

},

"main/tabs/home": {

"isFragment": true,

"asStarter": true,

"needLogin": false,

"pageUrl": "main/tabs/home",

"className": "com.test.ppjoke.ui.home.HomeFragment",

"id": 509754652

},

"main/tabs/my": {

"isFragment": true,

"asStarter": false,

"needLogin": false,

"pageUrl": "main/tabs/my",

"className": "com.test.ppjoke.ui.my.MyFragment",

"id": 750793084

}

}

对应的destination的javabean文件:

public class Destination {

public String pageUrl;

public int id;

public boolean needLogin;

public boolean asStarter;

public boolean isFragment;

public String className;

}

main_tabs_config.json如下:

{

"activeColor": "#333333",

"inActiveColor": "#666666",

"selectTab": 0,

"tabs": [

{

"size": 24,

"enable": true,

"index": 0,

"pageUrl": "main/tabs/home",

"title": "首页"

},

{

"size": 24,

"enable": true,

"index": 1,

"pageUrl": "main/tabs/sofa",

"title": "沙发"

},

{

"size": 40,

"enable": true,

"index": 2,

"tintColor": "#ff678f",

"pageUrl": "main/tabs/publish",

"title": ""

},

{

"size": 24,

"enable": true,

"index": 3,

"pageUrl": "main/tabs/dash",

"title": "发现"

},

{

"size": 24,

"enable": true,

"index": 4,

"pageUrl": "main/tabs/my",

"title": "我的"

}

]

}

对应的BottomBar的JavaBean文件如下:

import java.util.List;

public class BottomBar {

/**

* activeColor : #333333

* inActiveColor : #666666

* tabs : [{"size":24,"enable":true,"index":0,"pageUrl":"main/tabs/home","title":"首页"},{"size":24,"enable":true,"index":1,"pageUrl":"main/tabs/sofa","title":"沙发"},{"size":40,"enable":true,"index":2,"tintColor":"#ff678f","pageUrl":"main/tabs/publish","title":""},{"size":24,"enable":true,"index":3,"pageUrl":"main/tabs/find","title":"发现"},{"size":24,"enable":true,"index":4,"pageUrl":"main/tabs/my","title":"我的"}]

*/

public String activeColor;

public String inActiveColor;

public List tabs;

public int selectTab;//底部导航栏默认选中项

public static class Tab {

/**

* size : 24

* enable : true

* index : 0

* pageUrl : main/tabs/home

* title : 首页

* tintColor : #ff678f

*/

public int size;

public boolean enable;

public int index;

public String pageUrl;

public String title;

public String tintColor;

}

}

读取json并解析的java代码:

import android.content.res.AssetManager;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.TypeReference;

import com.test.ppjoke.model.BottomBar;

import com.test.ppjoke.model.Destination;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.Collections;

import java.util.Comparator;

import java.util.HashMap;

public class AppConfig {

private static HashMap sDestConfig;

private static BottomBar sBottomBar;

public static HashMap getDestConfig() {

if (sDestConfig == null) {

String content = parseFile("destination.json");

sDestConfig = JSON.parseObject(content, new TypeReference>() {

});

}

return sDestConfig;

}

public static BottomBar getBottomBarConfig() {

if (sBottomBar == null) {

String content = parseFile("main_tabs_config.json");

sBottomBar = JSON.parseObject(content, BottomBar.class);

}

return sBottomBar;

}

private static String parseFile(String fileName) {

AssetManager assets = AppGlobals.getApplication().getAssets();

InputStream is = null;

BufferedReader br = null;

StringBuilder builder = new StringBuilder();

try {

is = assets.open(fileName);

br = new BufferedReader(new InputStreamReader(is));

String line = null;

while ((line = br.readLine()) != null) {

builder.append(line);

}

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if (is != null) {

is.close();

}

if (br != null) {

br.close();

}

} catch (Exception e) {

}

}

return builder.toString();

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/275841.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文搞懂 Promise、Genarator、 Async 三者的区别和联系

非985/211大学毕业,软件工程专业,前端,坐标:北京工作三年多,第一家人数 30 多人的创业公司,1 年多。第二家属于前端技术不错的公司,2 年多。01我是一个喜欢在技术领域“折腾”的人,技…

闭包,sync使用细节

代码 先看代码如下&#xff1a; func main() {var a []intfor i : 0; i < 100; i {go func() {a append(a, i)}()}time.Sleep(2 * time.Second)fmt.Println(a) } 这段测试代码是想要一个元素为0到100的切片&#xff0c;但是这一小段代码隐藏了很多的问题。 闭包函数 先看这…

dynamic 仪表板_仪表板完成百万美元交易

dynamic 仪表板问题 (The Problem) Anybody dealing with tech products and data-focused services runs into the same fundamental problem: what you do is technical but non-technical people control the budget. In other words:任何处理高科技产品和以数据为中心的服务…

checkStyle -- 代码风格一致

download page: http://sourceforge.net/project/showfiles.php?group_id80344&package_id107587 转载于:https://www.cnblogs.com/xuqiang/archive/2010/10/26/1953431.html

在线VS Code阅读源码神器 github1s

大家好&#xff0c;我是若川。github1s大部分人知道了&#xff0c;但还是有一部分不知道。我在掘金发过沸点和知乎发过想法还是有挺多人不知道&#xff0c;所以再发公众号推荐下。点击下方卡片关注我、加个星标。学习源码整体架构系列、年度总结、JS基础系列近日&#xff0c;一…

lenze变频器怎么更改地址_英威腾变频器GD300维修

英威腾变频器GD300维修英威腾变频器GD300维修41. 问题&#xff1a;变频器跟PLC采用485通讯不上答&#xff1a;1.检查变频器的通讯地址是否正确&#xff0c;如果采用通讯启动&#xff0c;检查P0.01是否为1&#xff0c;如果通过通讯设定频率&#xff0c;检查P0.068&#xff0c;P0…

代码设计的基础原则_设计原则:良好设计的基础

代码设计的基础原则As designers, it’s our goal to pass information in the most pleasing way possible. Starting out, there’s a wealth of literature to read and videos to watch that can get quite overwhelming to take in at a glance. People take different ro…

SQL根据细粒度为天的查询

当我们集成了一些前端框架&#xff0c;在某些展示页面上往往具有某些查询条件。而这其中日期查询的处理又较为麻烦&#xff0c;此处&#xff0c;我罗列了一种当前台上传了一种默认的date格式的日期查询数据至后台未经Controller或Service层处理直接在SQL中处理的一种方式——即…

企业生产经营相关英文及缩写之(11)--Genenic 普通书写

Genenic 普通书写 ASAP As soon as possible 尽早 BCC Blink Carbon Copy 无信头抄送&#xff0c;无信头副本 BR Best Regards 最诚致的问候 BTW By the way 顺便问一下 CC Carbon Copy …

java金额类型_Java中存储金额用什么数据类型?

很早之前, 记得一次面试, 面试官问存储金钱用什么数据类型? 当时只知道8种数据类型(boolean, byte, short, int, long, float, double, char)的我, 回答了double, 因为我觉得double是双精度类型, 最适合, 但是面试官告诉我应该用BigDecimal! 最近在做支付的项目, 才对这种数据…

信息技术与信息革命

信息资源管理学什么 围绕 信息这份战略资源&#xff0c;从信息资源的管理角度出发&#xff0c;以信息系统为主要研究对象&#xff0c; 研讨了信息系统规划&#xff0c;信息系统开发 信息系统的内容&#xff0c;信息系统安全以及信息资源管理中 涉及的法律法规 知识框架 信息技术…

React Hooks 不知道怎么学?看这篇

大家好&#xff0c;我是若川。最近跟朋友聊技术&#xff0c;发现越来越多的大厂&#xff0c;都优先考虑用 React 做项目&#xff0c;在面试中也经常会考察对 React Hooks 的理解。其实&#xff0c;我一直觉得&#xff0c;React 才是前端的正确打开方式。当然&#xff0c;并不是…

数字与企鹅的战争,看周红衣的高明之处

本文非原创&#xff0c;转自月光    360与QQ最近的一轮大战已经接近尾声&#xff0c;毫无疑问的是&#xff0c;360在这一轮对决中以胜利告终。这场战争持续了整整一个月零两天&#xff0c;先后经历了几次小小的高潮&#xff0c;最终周鸿祎祭出绝招&#xff0c;秒杀群雄&#…

ui原型设计工具_UI设计师的工具包,用于专业模型,原型和产品插图

ui原型设计工具This is a followup to my previous article 这是我上一篇文章的后续 visual tools for UX Designers视觉工具Tools don’t make designs better– you do! It doesn’t matter if you paid a lot of money for the latest software, or if you simply have a p…

java wsdl xfire_java调用wsdl xfire和cxf两种方式

xfire 如下&#xff1a;String spID "";String password "";String accessCode "";String content "";String mobileString "";String url "";String operateName "Submit";Object[] object newObject…

请求与响应

HTTP 请求与响应 HTTP 请求的组成的四部分&#xff1a; 1 动词 路径 协议/版本2 Key1: value12 Key2: value22 Key3: value32 Content-Type: application/x-www-form-urlencoded2 Host: www.baidu.com2 User-Agent: curl/7.54.034 要上传的数据 关于以上各部分内容的碎碎念&…

前端 Offer 提速:如何写出有亮点的简历

大家好&#xff0c;我是若川。今天推荐一篇8年工作经验字节大佬的文章&#xff0c;如何写出有亮点的简历。可以收藏常看。点击下方卡片关注我、加个星标。学习源码整体架构系列、年度总结、JS基础系列先来个灵魂拷问&#xff1a;「你与他人相比&#xff0c;有什么能形成明显区分…

2008中的membership profile操作(转)

<profile > <properties> <add name"jimmy" /> </< span>properties> </< span>profile> 然后就那么简单,后台就能通过Profile拿到: Profile.jimmy "Pumpkin Ravioli"; 然后~通过这种方式就跟Session一样&a…

css网格_一个CSS网格可以全部统治

css网格The case for using one CSS grid for your entire website在整个网站上使用一个CSS网格的情况 CSS网格与Flexbox (CSS Grid vs Flexbox) In the dark ages, we used table, a few years ago we used float and before today most of us used flex . Of course, these …

java 高级泛型_Java 泛型高级

1、限制泛型可用类型在定义泛型类别时&#xff0c;预设可以使用任何的类型来实例化泛型中的类型&#xff0c;但是如果想要限制使用泛型的类别时&#xff0c;只能用某个特定类型或者其子类型才能实例化该类型时&#xff0c;使用extends关键字指定这个类型必须是继承某个类&#…