创建json文件
/main >> 右键new >> Folder >> Assets Folder
json对象和数组
json对象:{key1:value1,key2:value2,...}
json数组:[{key1:value1,...},{key11:value11,...}]
读取解析
// 两种方式: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");
}
示例代码
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;}
}