zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android读取assets下的json文件后转化实体类

Android文件JSONJSON 读取 转化 实体类 assets
2023-09-14 09:13:59 时间

1、assets下的json文件内容:

{
  "code": 200,
  "message": "获取成功",
  "data":[
    {
      "id":"001",
      "name":"小猪",
      "img":"StringURL1"
    },
    {
      "id":"002",
      "name":"小猫",
      "img":"StringURL2"
    },
    {
      "id":"003",
      "name":"小狗",
      "img":"StringURL3"
    }
  ]
}

2、创建实体类MyBean.java

public class MyBean {
    private int code;
    private String message;
    private List<DataBean> data;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean{
        private String id;
        private String name;
        private String img;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

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

        public String getImg() {
            return img;
        }

        public void setImg(String img) {
            this.img = img;
        }
    }
}

3、读取assets下的json文件后转化实体类,AssetsUtil.java

//调用到AssetsUtil.java来读取assets下的json文件后转化实体类
public class AssetsUtil {
    public static List<MyBean.DataBean> getStates(Context context) {
        InputStream is = null;
        ByteArrayOutputStream bos = null;
        try {
            is = context.getAssets().open("data.json");
            bos = new ByteArrayOutputStream();
            byte[] bytes = new byte[4 * 1024];
            int len = 0;
            while ((len = is.read(bytes)) != -1) {
                bos.write(bytes, 0, len);
            }
            final String json = new String(bos.toByteArray());
            Gson gson = new Gson();
            final MyBean MyBean = gson.fromJson(json, MyBean.class);
            final List<MyBean.DataBean> dataBeans = MyBean.getData();

            return dataBeans;
            
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (is != null)
                    is.close();
                if (bos != null)
                    bos.close();
            } catch (IOException e) {
                Log.e(TAG, "getStates", e);
            }
        }
        return null;
    }
}

4、MainActivity.java

public class MainActivity extends AppCompatActivity {
    private List<MyBean.DataBean> dataBeans;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dataBeans = new ArrayList<>();
        dataBeans = AssetsUtil.getStates(this);
    }
}