http://data.fda.gov.tw/cacheData/159_3.json
由於是兩層jsonarry 所以必須爬兩層jsonarry 才能取到裡面 jsonobject的值
JSONArray jsonarry = new JSONArray(result.replaceAll("\\},\\s?\\{", ","));
Log.e("Jack", "jsonarry:" + jsonarry.length());
for(int i = 0 ; i<jsonarry.length();i++){
JSONArray jsonarry2 =jsonarry.getJSONArray(i);
for( int j =0 ; j<jsonarry2.length() ; j++){
JSONObject jsonObject = jsonarry2.getJSONObject(j);
Gson gson = new Gson();
ResultData data = gson.fromJson(jsonObject.toString(),
ResultData.class);
因為URL 提供的jsonobject格式 跟 本機寫法不一樣
本機寫法 一個object 包含很多資料 URL提供的則是 一個 object 一個資料
所以 如果沒去 區分的話 會變成很怪
所以JSONArray jsonarry = new JSONArray(result.replaceAll("\\},\\s?\\{", ","));
這段code 就是把array裡面的object 整理成一個大 object 這樣就不用麻煩去區分了
result.replaceAll 替換文字用法 將 第一個的值 用第二個去取代
"\\},\\s?\\{", ",") 因為 {} 是特殊符號 所以會出錯 所以要用 \\去區分 \\s?則是 不管有沒有空格都可以認可
String key =data.分類+","+data.標題;
ArrayList<ResultData> animalKind = mKind.get(key);
if (animalKind == null) {
animalKind = new ArrayList<ResultData>();
}
mKind.put(key, animalKind);
animalKind.add(data);
ArrayList<String> towmShip = mCity.get(data.分類);
if (towmShip == null) {
towmShip = new ArrayList<String>();
}
mCity.put(data.分類, towmShip);
if(!towmShip.contains(data.標題)) towmShip.add(data.標題);
allData.add(data);
}
}
由於 內容的值 有html格式
所以可以用Html.fromHtml 去解析
textview3.setText(Html.fromHtml(data.內容));
textview3.setAutoLinkMask(Linkify.ALL);
上面 則是 有超連結時候 可以執行超連結內容
但是必須 加上
textview3.setMovementMethod(LinkMovementMethod.getInstance());
這行才能執行
不然一樣不會work