JSON是什么
JSON是JvaScript Object Natation,是一种轻量级的数据交换格式
JSON的语法
1、数据在名称/值对中 "name":"Kobe"
2、数据由逗号分割 "name":"Kobe","team":"Lakers"
3、花括号{}表示对象 "star":{"name":"Kobe","team":"Lakers"}
4、方括号[]表示数组 {"stars":[{"name":"Kobe","team":"Lakers"},{"name":"Curry","team":"Warriors"}]}
正确的json
{
"stars": [
{
"star": {
"name": "Kobe",
"team": "Lakers"
}
},
{
"star": {
"name": "Curry",
"team": "Warriors"
}
}
]
}
使用JSONArray与JSONObject解析
1、简单的JSON的解析
首先准备一个json文件放在android的assets目录下
[
{"name":"Kobe","team":"Lakers"}
,
{"name":"Durant","team":"Thunder"}
,
{"name":"Curry","team":"Warriors"}
]
读取JSON文件的方法
public String getJSONData(String fileName){
StringBuilder result=new StringBuilder();
String line="";
try {
InputStream in=getResources().getAssets().open(fileName);
BufferedReader br=new BufferedReader(new InputStreamReader(in));
while((line=br.readLine())!=null){
result.append(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result.toString();
}
解析json的方法
private void parseJSON(String jsonData){
//JSONArray array;
try {
JSONArray array = new JSONArray(jsonData);
for(int i=0;i<array.length();i++){
JSONObject object=array.getJSONObject(i);
String name=object.getString("name");
String team=object.getString("team");
Log.i(TAG, "name is:-------"+name);
Log.i(TAG, "team is:-------"+team);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
2、复杂一点的json解析
json数据
{
"stars": [
{
"star": {
"name": "Kobe",
"team": "Lakers"
}
},
{
"star": {
"name": "Curry",
"team": "Warriors"
}
}
]
}
解析方法
private void parseJSON(String jsonData){
try {
JSONObject stars=new JSONObject(jsonData);
JSONArray array=stars.getJSONArray("stars");
for(int i=0;i<array.length();i++){
JSONObject star=array.getJSONObject(i);
JSONObject obj=star.getJSONObject("star");
String name=obj.getString("name");
String team=obj.getString("team");
Log.i(TAG, "name is:-------"+name);
Log.i(TAG, "team is:-------"+team);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
使用GSON进行JSON解析
首先下载到需要的jar文件,加到libs文件里
新建一个JavaBean
public class Star {
private String mName;
private String mTeam;
public String getName() {
return mName;
}
public void setName(String name) {
mName = name;
}
public String getTeam() {
return mTeam;
}
public void setTeam(String team) {
mTeam = team;
}
}
Gson gson=new Gson();
Star star=gson.fromJson(jsonData, Star.class);
2、解析一个JSON数组
public void parseJSONWithGson(){
try{
InputStream in=getResources().getAssets().open("stars.json");
BufferedReader br=new BufferedReader(new InputStreamReader(in));
StringBuilder result=new StringBuilder();
String line="";
while((line=br.readLine())!=null){
result.append(line);
}
Gson gson=new Gson();
List<Star> stars=gson.fromJson(result.toString(), new TypeToken<List<Star>>(){}.getType());
for(Star star:stars){
Log.i(TAG, star.toString());
}
}catch(Exception e){
e.printStackTrace();
}
}