2015年11月30日 星期一

自我開發APP 學習筆記 2015- 11- 30

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



2015年11月20日 星期五

JSON

JSONObject o = new JSONObject(result);
JSONObject resultObj = o.getJSONObject("result");
JSONArray jsonArray = resultObj.getJSONArray("results");