日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

android json教程,Android之JSON解析

發(fā)布時間:2024/3/26 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android json教程,Android之JSON解析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

編寫項目,包含一個Activity。Activity頁面效果如下圖所示。點擊按鈕“解析文件1”后解析Json文件json_single并將結(jié)果顯示在紅色框體中,點擊按鈕“解析文件2”后解析Json文件json_multiple并將結(jié)果顯示在紅色框體中(有多條數(shù)據(jù),建議使用列表控件ListView進行信息展示)。

先寫xml布局文件

1 <?xml version="1.0" encoding="utf-8"?>

2

3 android:layout_width="match_parent"

4 android:layout_height="match_parent"

5 android:orientation="vertical">

6

7

8 android:id="@+id/button50"

9 android:layout_width="match_parent"

10 android:layout_height="wrap_content"

11

12 android:text="解析文件1" />

13

14 android:id="@+id/button51"

15 android:layout_width="match_parent"

16 android:layout_height="wrap_content"

17 android:text="解析文件2" />

18

19 android:layout_width="match_parent"

20 android:layout_height="wrap_content"

21 android:id="@+id/LS"/>

22

將我們的JSON文件導(dǎo)入到res的raw下,如果沒有raw,右鍵Andrriod Resource Directory在Resource type中輸入raw,ok

json_single.json :

1 {

2 "name":"王小二",

3 "age":25,

4 "birthday":"1990-01-01",

5 "school":"師大",

6 "car":"比亞迪",

7 "house":"宿舍",

8 }

json_multiple.json :

1 [{

2 "name":"王小二",

3 "age":25,

4 "birthday":"1990-01-01",

5 "school":"師大",

6 "car":"比亞迪",

7 "house":"宿舍",

8 },

9 {

10 "name":"李三",

11 "age":30,

12 "birthday":"1987-04-13",

13 "school":"清華",

14 "car":"大眾速騰",

15 "house":"公寓",

16 },

17 {

18 "name":"張盼盼",

19 "age":17,

20 "birthday":"1995-07-02",

21 "school":"北大",

22 "car":"寶馬7系",

23 "house":"別墅",

24 }]

思路很簡單,就是讀取到j(luò)son文件然后解析最后顯示出來。

Mainactiviyt :

1 package com.example.app;

2

3 import androidx.annotation.RequiresApi;

4 import androidx.appcompat.app.AppCompatActivity;

5

6 import android.Manifest;

7 import android.annotation.SuppressLint;

8 import android.os.Build;

9 import android.os.Bundle;

10 import android.view.View;

11 import android.view.ViewGroup;

12 import android.view.LayoutInflater;

13

14 import android.widget.*;

15 import org.json.*;

16 import org.json.JSONException;

17 import org.json.JSONObject;

18 import java.io.BufferedReader;

19 import java.io.FileOutputStream;

20 import java.io.FileInputStream;

21 import java.io.IOException;

22 import java.io.InputStream;

23 import java.io.InputStreamReader;

24 import java.security.Permission;

25 import java.security.Permissions;

26 import java.io.UnsupportedEncodingException;

27

28

29 public class MainActivity extends AppCompatActivity {

30

31 private static String[] Json; //用來存儲的數(shù)組

32 private ListView LS;

33 private Button B1;

34 private Button B2;

35 private int a = 0;

36

37 @Override

38 protected void onCreate(Bundle savedInstanceState) {

39 super.onCreate(savedInstanceState);

40 setContentView(R.layout.homework_8_2);

41

42 B1 = (Button) findViewById(R.id.button50);

43 B2 = (Button) findViewById(R.id.button51);

44 LS = (ListView) findViewById(R.id.LS); //實例化按鈕B1,B2,和listview

45 B1.setOnClickListener(new View.OnClickListener() {//監(jiān)聽B1

46 @Override

47 public void onClick(View v) {

48 //Json = new String[100];

49 JsonDataToString1(); //讀取json文件

50 }

51 });

52 B2.setOnClickListener(new View.OnClickListener() {//監(jiān)聽B2

53 @Override

54 public void onClick(View v) {

55 //Json = new String[100];

56 a = 0; //當(dāng)B2被點擊,變量a就會重置為0

57 JsonDataToString2(); //讀取json文件

58 }

59 });

60 }

61 @SuppressLint("ResourceType")

62 private void JsonDataToString1(){

63

64 InputStreamReader inputStreamReader = null;

65 String jsonData = "";

66 try {

67 inputStreamReader = new InputStreamReader(getResources().openRawResource(R.raw.json_single),"UTF-8");//讀取

68 BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

69 String line;

70 StringBuilder srt = new StringBuilder();

71 while((line = bufferedReader.readLine()) != null){

72 srt.append(line);

73 }

74 inputStreamReader.close();

75 bufferedReader.close();

76 jsonData = srt.toString(); //以上就是讀取json文件,轉(zhuǎn)化成string

77 }catch (UnsupportedOperationException e){

78 e.printStackTrace();

79 }catch (IOException e){

80 e.printStackTrace();

81 }

82

83 if (jsonData != ""){

84 getDataFromData1(jsonData); //進一步分析字符串,獲取json內(nèi)容

85 }else {

86 Toast.makeText(MainActivity.this,"error",Toast.LENGTH_SHORT).show();

87 }

88 }

89

90 private void getDataFromData1(String jsonData){

91 try{

92

93 JSONObject jsonObject = new JSONObject(jsonData);

94 String name = jsonObject.getString("name");

95 String age = jsonObject.getString("age");

96 String birthday = jsonObject.getString("birthday");

97 String school = jsonObject.getString("school");

98 String car = jsonObject.getString("car");

99 String house = jsonObject.getString("house"); //獲取json內(nèi)容

100 Json = new String[]{

101 "name:"+name,"age:"+age,"birthday:"+birthday,"school:"+school,"car:"+car,"house:"+house

102 };//將json內(nèi)容存進數(shù)組中

103 ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,R.id.LS);//新建并配置ArrayAapeter

104 MyBaseAdapter mAdapter = new MyBaseAdapter();

105 LS.setAdapter(mAdapter);

106 }catch (JSONException e){

107 e.printStackTrace();

108 }

109 }

110

111 @SuppressLint("ResourceType")

112 private void JsonDataToString2(){

113

114 InputStreamReader inputStreamReader = null;

115 String jsonData = "";

116 try {

117 inputStreamReader = new InputStreamReader(getResources().openRawResource(R.raw.json_multiple),"UTF-8");//讀取

118 BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

119 String line;

120 StringBuilder srt = new StringBuilder();

121 while((line = bufferedReader.readLine()) != null){

122 srt.append(line);

123 }

124 inputStreamReader.close();

125 bufferedReader.close();

126 jsonData = srt.toString();//以上就是讀取json文件,轉(zhuǎn)化成string

127 }catch (UnsupportedOperationException e){

128 e.printStackTrace();

129 }catch (IOException e){

130 e.printStackTrace();

131 }

132

133 if (jsonData != ""){

134 getDataFromData2(jsonData); //進一步分析字符串,獲取json內(nèi)容

135 }else {

136 Toast.makeText(MainActivity.this,"error",Toast.LENGTH_SHORT).show();

137 }

138 }

139

140 private void getDataFromData2(String jsonData){

141 try{

142 Json = new String[100]; //這里必須初始化Json數(shù)組,否則點擊完解析一后Json數(shù)組的length只有6,會因空間不足而程序崩潰

143 JSONArray jsonArray = new JSONArray(jsonData);

144 //String[] bbk = new String[]{};

145 for (int i=0;i

146 JSONObject jsonObject = jsonArray.getJSONObject(i);

147 String name = jsonObject.getString("name");

148 String age = jsonObject.getString("age");

149 String birthday = jsonObject.getString("birthday");

150 String school = jsonObject.getString("school");

151 String car = jsonObject.getString("car");

152 String house = jsonObject.getString("house");//解析出json的內(nèi)容

153 Json[a] = "name:"+name; //為了將數(shù)據(jù)循環(huán)存儲進Json數(shù)組中,用了一個變量a來控制

154 Json[a+1] = "age:"+age;

155 Json[a+2] = "birthday:"+birthday;

156 Json[a+3] = "school:"+school;

157 Json[a+4] = "car:"+car;

158 Json[a+5] = "house:"+house; //因為發(fā)現(xiàn)數(shù)據(jù)有六項且key值都一樣,就正好用一個變量a來表示數(shù)組的下標

159 a = a+6; //如果a不重置為0,那么a會不停的往上加,直到超出數(shù)組下標溢出,導(dǎo)致程序崩潰

160 }

161 ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,R.id.LS);//新建并配置ArrayAapeter

162 MyBaseAdapter mAdapter = new MyBaseAdapter();

163 LS.setAdapter(mAdapter);

164 }catch (JSONException e){

165 e.printStackTrace();

166 }

167 }

168

169 class MyBaseAdapter extends BaseAdapter{ //這里不解釋

170

171 @Override

172 public int getCount() {

173 return Json.length;

174 }

175 @Override

176 public Object getItem(int position) {

177 return null;

178 }

179 @Override

180 public long getItemId(int position) {

181 return 0;

182 }

183 @Override

184 public View getView(int position, View convertView, ViewGroup parent) {

185 ViewHolder holder;

186 if(convertView == null){

187 convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.homework_five_2,parent,false);

188 holder = new ViewHolder();

189 holder.mTextView = (TextView) convertView.findViewById(R.id.tv);

190 convertView.setTag(holder);

191 }else {

192 holder = (ViewHolder) convertView.getTag();

193 }

194 holder.mTextView.setText(Json[position]);

195 return convertView;

196 }

197 class ViewHolder {

198 TextView mTextView;

199 }

200 }

201

202 }

我們的布局文件用的listview,所以我們需要再寫一個布局文件提供格式

1 <?xml version="1.0" encoding="utf-8"?>

2

3 xmlns:app="http://schemas.android.com/apk/res-auto"

4 android:layout_width="match_parent"

5 android:layout_height="match_parent">

6

7

8 android:id="@+id/tv"

9 android:layout_width="match_parent"

10 android:layout_height="match_parent"/>

11

12

結(jié)果如圖

最后,趕時間寫出來的,寫的很爛,等過幾天精簡一下代碼,等待更新哦!

來源:https://www.cnblogs.com/rebirther/p/12888087.html

總結(jié)

以上是生活随笔為你收集整理的android json教程,Android之JSON解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。