JSON是一種格式=物件型態用文字表示出來像用=檔案很小
Map{key{Value}}
資料分三種:
JSON是半結構化
政府開放資料: https://data.gov.tw/
點到交通-有看到JSON資料類型
點JSON下載下來點開看-
JSON檔案很小可以一直塞
JSON解析器
https://jsoneditoronline.org/#left=local.dowolo&right=local.gogavu
把剛剛下載的資料全部貼入
開新檔案:
布置xml檔
也是要綁 onclick
產生方法:
自己產生JSON檔
把原來的Android換成Project
換成Project
長這樣
展開
main-->new-->Directory
Directory的名稱-assets 一定要有S不可以亂打
assets 檔案
assets 檔案--再新增File
命名檔案不要中文-要加上副檔名.json
按enter
開始~
開始打入key和value
{
"no": 1,
"friends": []
}
加入物件 最後一個沒有,
那3個放在{}陣列裡面的屬性要一樣
KEY不能改: VALUE值可以改
{
"no": 1,
"friends": [
{"name": "AAAA","phone": "1234567890"},
{"name": "SONIA","phone": "0987654321"},
{"name": "ANNY","phone": "13572468"}
]
}
回到java檔-宣告變數
package com.huang.myjson;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import org.json.JSONObject;
public class MainActivity extends AppCompatActivity {
//宣告變數
Context context;
TextView show;
JSONObject obj;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onclick(View view) {
}
}
初始化-
package com.huang.myjson;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import org.json.JSONObject;
public class MainActivity extends AppCompatActivity {
//宣告變數
Context context;
TextView show;
JSONObject obj;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
context = this;
show = findViewById(R.id.show);
}
public void onclick(View view) {
}
}
在onclick先產生空的暫時的容器+不同來源的取得方式
package com.huang.myjson;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import org.json.JSONObject;
public class MainActivity extends AppCompatActivity {
//宣告變數
Context context;
TextView show;
JSONObject obj;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
context = this;
show = findViewById(R.id.show);
}
public void onclick(View view) {
//暫存資料區
StringBuilder sb = new StringBuilder();
String all="";
//Assets資源管理器
AssetManager manager = context.getAssets();
}
}
//讀取JSON檔:byte-->char-->String-->一行一行讀取
package com.huang.myjson;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class MainActivity extends AppCompatActivity {
//宣告變數
Context context;
TextView show;
JSONObject obj;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
context = this;
show = findViewById(R.id.show);
}
public void onclick(View view) {
//暫存資料區
StringBuilder sb = new StringBuilder();
String all="";
//Assets資源管理器
AssetManager manager = context.getAssets();
//讀取JSON檔:byte-->char-->String-->一行一行讀取
BufferedReader br = new BufferedReader(new InputStreamReader(manager.open("myjson.json")));
}
}
open要拋例外 反紅才會消失
目前長這樣.順序不可反
package com.huang.myjson;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class MainActivity extends AppCompatActivity {
//宣告變數
Context context;
TextView show;
JSONObject obj;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
context = this;
show = findViewById(R.id.show);
}
public void onclick(View view) {
//暫存資料區
StringBuilder sb = new StringBuilder();
String all="";
//Assets資源管理器
AssetManager manager = context.getAssets();
//讀取JSON檔:byte-->char-->String-->一行一行讀取
try {
BufferedReader br = new BufferedReader(new InputStreamReader(manager.open("myjson.json")));
} catch (IOException e) {
e.printStackTrace();
}
}
}
JSONObject obj;做初始化動作+
轉成字串 JSONObject會反紅是因為要拋例外
長這樣
package com.huang.myjson;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class MainActivity extends AppCompatActivity {
//宣告變數
Context context;
TextView show;
JSONObject obj;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
context = this;
show = findViewById(R.id.show);
}
public void onclick(View view) {
//暫存資料區
StringBuilder sb = new StringBuilder();
String all="";
//Assets資源管理器
AssetManager manager = context.getAssets();
try {
//讀取JSON檔:byte-->char-->String-->一行一行讀取
BufferedReader br = new BufferedReader(
new InputStreamReader(manager.open("myjson.json")));
//逐行讀取並放到StringBuilder中
String line;
while ((line=br.readLine())!=null){
sb.append(line);
}
//將字串轉成"JSON物件"
JSONObject allObj = new JSONObject(sb.toString());
} catch (IOException | JSONException e) {
e.printStackTrace();
}
}
}
JSONObject allObj = new JSONObject(sb.toString());
把準字串轉
obj = new JSONObject(sb.toString());
再加入Toast這個又要用手機才可以看到結果
package com.huang.myjson;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class MainActivity extends AppCompatActivity {
//宣告變數
Context context;
TextView show;
JSONObject obj;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
context = this;
show = findViewById(R.id.show);
}
public void onclick(View view) {
//暫存資料區
StringBuilder sb = new StringBuilder();
String all="";
//Assets資源管理器
AssetManager manager = context.getAssets();
try {
//讀取JSON檔:byte-->char-->String-->一行一行讀取
BufferedReader br = new BufferedReader(
new InputStreamReader(manager.open("myjson.json")));
//逐行讀取並放到StringBuilder中
String line;
while ((line=br.readLine())!=null){
sb.append(line);
}
//將字串轉成"JSON物件"
obj = new JSONObject(sb.toString());
//指定要取出的陣列
JSONArray objArray = obj.getJSONArray("friends");
//讀取裡面的東西.把3個name都收起來
for(int i=0;i< objArray.length();i++){
JSONObject o=objArray.getJSONObject(i);
String name = o.getString("name");
all +=name+"";
}
//用文字欄位顯示結果 Toast.makeText(context,all,Toast.LENGTH_SHORT).show();
show.setText(all);
} catch (IOException | JSONException e) {
e.printStackTrace();
Toast.makeText(context,"FAIL",Toast.LENGTH_SHORT).show();
}
}
}
抓到3個名字
下周要面試考mysql+C#我應該要來準備的.........最後錄取了~只是我不會去
其實非本科面試機會並不會很少~人人有機會
所以這篇還是先純文字~真拍謝:
Andriod環境安裝好了之後的步驟:
因為又開始愛睏了~
希望...可以讓我繼續有鐵人發文的機會~拜託拜託