创建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;
}
}