Android 解析本地 json 文件内容的简单封装

举报
半身风雪 发表于 2022/06/24 11:49:29 2022/06/24
【摘要】 1、右键项目目录,选择new -> foldel -> Assets Foldel 在main 文件目录下创建一个 assets 文件夹,这个文件夹里面我们存放本地的JSON 文件2、代码实现package com.traveleasy.electricity.utils;import android.content.Context;import android.content.res.As...

1、右键项目目录,选择new -> foldel -> Assets Foldel 在main 文件目录下创建一个 assets 文件夹,这个文件夹里面我们存放本地的JSON 文件

在这里插入图片描述

2、代码实现

package com.traveleasy.electricity.utils;

import android.content.Context;
import android.content.res.AssetManager;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;

public class GetJsonDataUtil {

    /**
     * 读取本地的JSON 数据
     *
     * @param context
     * @param fileName
     * @return
     */
    public String getJson(Context context, String fileName) {


        StringBuffer stringBuffer = new StringBuffer();
        try {
            AssetManager assetsManager = context.getAssets();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(assetsManager.open(fileName)));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                stringBuffer.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }



        return stringBuffer.toString();
    }
}

3、代码调用

        GetJsonDataUtil getJsonDataUtil = new GetJsonDataUtil();
        
        String jsonData = getJsonDataUtil.getJson(context, "GoodsList.json");

        Gson gson = new Gson();
//        解决 泛型<T>不能强转为List
        BaseBean<List<Goods>> list = gson.fromJson(jsonData, new TypeToken<BaseBean<List<Goods>>>() {}.getType());
        getView().getGoodsSuccess(list.getData());

上面的jsonData 字符串,就是我们解析出来的数据字符串了

后面我又使用了泛型转换list 方法,用于解决 typeToken 泛型强转失败的BUG

BaseBean<List<Goods>> list = gson.fromJson(jsonData, new TypeToken<BaseBean<List<Goods>>>() {}.getType());

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。