Android Studio(Json)

创建json文件

/main >> 右键new >> Folder >> Assets Folder

json对象和数组

json对象:{key1:value1,key2:value2,...}

json数组:[{key1:value1,...},{key11:value11,...}]

读取解析

java 复制代码
// 两种方式:
	org.json:Android SDK自提供的,通过JSONObject和JSONArray两个类完成
	Gson:由Google公司提供,需下载gson.jar并添加到项目中

// 1. 解析json对象:
JSONObject jsonObject = new JSONObject(myJson);
String name = jsonObject.optString("name");
int age = jsonObject.optInt("age");
boolean isMarried = jsonObject.optBoolean("married");


// 2. 解析json数组:
JSONArray jsonArray = new JSONArray(myJson);
for (int i=0; i<jsonArray.lenth(); ++){
	JSONObject jsonObject = jsonArray.getJSONObject(i);
	String name = jsonObject.optString("name");
	int age = jsonObject.optInt("age");
}

示例代码

java 复制代码
package com.example.test;

import android.content.Context;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

public class JsonParse {
    // 单例
    private static JsonParse instance;
    public static JsonParse getInstance(){
        if (instance == null){
            instance = new JsonParse();
        }
        return instance;
    }
    // 读取json文件,将json数据转换为字符串
    private String read(InputStream inputStream){
        StringBuilder stringBuilder = new StringBuilder();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String line = null;
        try{
            while ((line=bufferedReader.readLine())!=null){
                stringBuilder.append(line);
                stringBuilder.append("\n");
            }
        }catch (Exception e){
            e.printStackTrace();
            return "";
        }finally {
            try {
                if(inputStream==null){
                    inputStream.close();
                }
                if(bufferedReader==null){
                    bufferedReader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return stringBuilder.toString();
    }
    
    public List<Weather> getInfoFromJson(Context context){
        List<Weather> weathers = new ArrayList<>();
        InputStream inputStream = null;
        try {
            inputStream = context.getResources().getAssets().open("weather.json");
            String results = read(inputStream);
            Gson gson = new Gson();
            Type type = new TypeToken<List<Weather>>(){}.getType();
            weathers = gson.fromJson(results, type);
            return weathers;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}
相关推荐
似霰2 分钟前
Linux timerfd 的基本使用
android·linux·c++
墨痕诉清风17 分钟前
CVS文件转Json格式
json·python3·cvs
爬山算法28 分钟前
Hibernate(85)如何在持续集成/持续部署(CI/CD)中使用Hibernate?
java·ci/cd·hibernate
菜鸟233号1 小时前
力扣647 回文子串 java实现
java·数据结构·leetcode·动态规划
qq_12498707531 小时前
基于Java Web的城市花园小区维修管理系统的设计与实现(源码+论文+部署+安装)
java·开发语言·前端·spring boot·spring·毕业设计·计算机毕业设计
h7ml1 小时前
查券返利机器人的OCR识别集成:Java Tesseract+OpenCV优化图片验证码的自动解析方案
java·机器人·ocr
野犬寒鸦1 小时前
从零起步学习并发编程 || 第五章:悲观锁与乐观锁的思想与实现及实战应用与问题
java·服务器·数据库·学习·语言模型
Volunteer Technology1 小时前
Sentinel的限流算法
java·python·算法
岁岁种桃花儿1 小时前
SpringCloud从入门到上天:Nacos做微服务注册中心
java·spring cloud·微服务
jdyzzy1 小时前
什么是 JIT 精益生产模式?它与传统的生产管控方式有何不同?
java·大数据·人工智能·jit