Android在大都情况会取得后台Service返回的json数据来做前端展示。那么Android是如何处理json文件的呢?我们就一起跟着今天的教程一步步来实现吧。
目标
设本地有一个demo.json,内容如下
{
"banks" : [
{
"value": "CDB",
"text":"国家开发银行"
},
{
"value": "ICBC",
"text":"中国工商银行"
},
{
"value": "ABC",
"text": "中国农业银行"
},
{
"value": "BOC",
"text": "中国银行"
},
{
"value": "cCB",
"text": "中国建设银行"
}
]
}
然后手机上有一个按钮,点一下这个按钮在手机的读行文本内展示成如下样子
进入开发
- 在手机上拖一个按钮、拖一个TextView。
- 然后把按钮和Text View的关系都设成上、下、左、右都为16,然后建立成Vertical Chain的关系。并且把按钮位于TextView的上方面。
- 把Textview的ID改成jsonDisplayer。
在Android中我们可以通过以下语句找到我们界面的控件
TextView jsonText= findViewById(R.id.jsonDisplayer);
以下是全代码,原理就是我做了一个public void getJson(View view){的方法,并把它绑定到了我们的这个按钮的onClick事件上了。
package org.mk.android.demo.androidjson;
import androidx.appcompat.app.AppCompatActivity;
import android.content.res.AssetManager;
import android.os.Bundle;
import org.json.JSONArray;
import org.json.JSONObject;
import android.view.View;
import android.widget.TextView;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class MainActivity extends AppCompatActivity {
public void getJson(View view){
InputStreamReader inputStreamReader=null;
BufferedReader br=null;
try{
AssetManager assetManager = getAssets(); //获得assets资源管理器(assets中的文件无法直接访问,可以使用AssetManager访问)
inputStreamReader = new InputStreamReader(assetManager.open("demo.json"),"UTF-8"); //使用IO流读取json文件内容
br = new BufferedReader(inputStreamReader);//使用字符高效流
String line;
StringBuilder builder = new StringBuilder();
while ((line = br.readLine())!=null){
builder.append(line);
}
JSONObject testJson = new JSONObject(builder.toString()); // 从builder中读取了json中的数据。
// 直接传入JSONObject来构造一个实例
JSONArray array = testJson.getJSONArray("banks");
System.out.println(">>>>>>banks object is->"+array.toString());
TextView jsonText= findViewById(R.id.jsonDisplayer);
for (int i = 0;i<array.length();i++){
JSONObject jsonObject = array.getJSONObject(i);
String text = jsonObject.getString("text");
String value = jsonObject.getString("value");
String displayTxt=value+":"+text+"\n";
jsonText.append(displayTxt);
System.out.println(">>>>>>JSON Data->\n"+text+value);
}
}catch(Exception e){
System.err.println(">>>>>>read json error->"+e.getMessage());
e.printStackTrace();
}finally{
try{
br.close();
}catch(Exception e){}
try{
inputStreamReader.close();
}catch(Exception e){}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
代码写完后在项目里把项目视图切换成标准的java视图
选中src/main右击鼠标,选择new->Folder→Assets Folder
然后我们就可以把我们的.json文件放在这了
剩下就是自己动一下手去实现吧,10分钟就开发好了。