Bài 34-Đọc JSon tỉ giá hối đoái của Ngân Hàng Đông Á trong Kotlin – Bài 3

Bài 34-Đọc JSon tỉ giá hối đoái của Ngân Hàng Đông Á trong Kotlin – Bài 3

Take Our Poll Tui đã trình bày kỹ cách sử dụng JSon trong Kotlin ở các bài 32, bài 33 […]

Learn more »


Tui đã trình bày kỹ cách sử dụng JSon trong Kotlin ở các bài 32, bài 33 . Tui muốn minh họa thêm một ví dụ cuối cùng về đọc JSon trong Kotlin, trong bài này Tui sẽ coding lấy Tỉ giá hối đoái của Ngân Hàng Đông Á cung cấp:

bạn vào link này để xem Webservice API cung Tỉ giá hối đoái của DongA Bank: http://dongabank.com.vn/exchange/export

Đây là kết quả (nó luôn chính xác và thời gian thực nhé các bạn, hàng ngày Ngân hàng Đông Á luôn cập nhật giá khi có sự thay đổi):

({“items”:[{“type”:”CAD”,”imageurl”:”http://www.dongabank.com.vn/images/flag/CAD.gif”,”muatienmat”:”16720″,”muack”:”16740″,”bantienmat”:”16930″,”banck”:”16930″},{“type”:”XAU”,”imageurl”:”http://www.dongabank.com.vn/images/flag/XAU.gif”,”muatienmat”:”3632000″,”muack”:”3621000″,”bantienmat”:”3655000″,”banck”:”3621000″},{“type”:”AUD”,”imageurl”:”http://www.dongabank.com.vn/images/flag/AUD.gif”,”muatienmat”:”16790″,”muack”:”16800″,”bantienmat”:”16980″,”banck”:”17000″},{“type”:”CHF”,”imageurl”:”http://www.dongabank.com.vn/images/flag/CHF.gif”,”muatienmat”:”23430″,”muack”:”23450″,”bantienmat”:”23730″,”banck”:”23730″},{“type”:”CNY”,”imageurl”:”http://www.dongabank.com.vn/images/flag/CNY.gif”,”muatienmat”:”3000″,”muack”:”3000″,”bantienmat”:”3500″,”banck”:”3500″},{“type”:”EUR”,”imageurl”:”http://www.dongabank.com.vn/images/flag/EUR.gif”,”muatienmat”:”25460″,”muack”:”25480″,”bantienmat”:”25750″,”banck”:”25750″},{“type”:”GBP”,”imageurl”:”http://www.dongabank.com.vn/images/flag/GBP.gif”,”muatienmat”:”29070″,”muack”:”29110″,”bantienmat”:”29450″,”banck”:”29450″},{“type”:”HKD”,”imageurl”:”http://www.dongabank.com.vn/images/flag/HKD.gif”,”muatienmat”:”2550″,”muack”:”2900″,”bantienmat”:”2940″,”banck”:”2940″},{“type”:”JPY”,”imageurl”:”http://www.dongabank.com.vn/images/flag/JPY.gif”,”muatienmat”:”204.3″,”muack”:”204.6″,”bantienmat”:”206.7″,”banck”:”206.7″},{“type”:”NZD”,”imageurl”:”http://www.dongabank.com.vn/images/flag/NZD.gif”,”muatienmat”:””,”muack”:”16120″,”bantienmat”:””,”banck”:”16320″},{“type”:”PNJ_DAB”,”imageurl”:”http://www.dongabank.com.vn/images/flag/PNJ_DAB.gif”,”muatienmat”:”3495000″,”muack”:”3495000″,”bantienmat”:”3545000″,”banck”:”3545000″},{“type”:”SGD”,”imageurl”:”http://www.dongabank.com.vn/images/flag/SGD.gif”,”muatienmat”:”16320″,”muack”:”16340″,”bantienmat”:”16540″,”banck”:”16540″},{“type”:”THB”,”imageurl”:”http://www.dongabank.com.vn/images/flag/THB.gif”,”muatienmat”:”595″,”muack”:”625″,”bantienmat”:”655″,”banck”:”655″},{“type”:”USD”,”imageurl”:”http://www.dongabank.com.vn/images/flag/USD.gif”,”muatienmat”:”22680″,”muack”:”22680″,”bantienmat”:”22750″,”banck”:”22750″}]})

Như chúng ta đã học ở những bài lý thuyết Json thì đây không phải là cấu trúc Json. Vì cấu trúc JSon chỉ chấp nhận 2 loại đó là: Dữ liệu được để trong {} hoặc được để trong [] . Còn ở đây Ngân Hàng Đông Á lại để () ở ngoài. Do đó lúc đọc dữ liệu về ta chỉ cần Remove 2 ký tự này đi là xong.

Tiếp tục phân tích cấu trúc của Json ở trên:

Rõ ràng ở ngoài là 1 đối tượng JSonObject, bên trong nó có một JSonArray đặt tên là items. Mỗi đối tượng trong mảng Items có 6 thuộc tính như ở trên.

Bây giờ ta tạo một Project, và đưa thư viện gson-2.8.1.jar như các bài trước vào (bạn tự làm vì Tui đã hướng dẫn rất chi tiết ở các bài trước ), rồi tiến hành tạo các lớp sau:

Lớp Item để lưu trữ các dữ liệu bên trong mảng items (chú ý là các thuộc tính phải copy paste y xì từ dữ liệu JSon mà Đông Á Bank cung cấp):

 /** * Created by cafe on 03/06/2017. */ class Item { var type:String="" var imageurl:String="" var muatienmat:String="" var muack:String="" var bantienmat:String="" var banck:String="" override fun toString(): String { return "Mã Tiền Tệ : "+type+"n"+ "Mua tiền mặt :"+muatienmat+"n"+ "Bán tiền mặt :"+bantienmat+"n"+ "Mua chuyển khoản :"+muack+"n"+ "Bán chuyển khoản :"+banck+"n"+ "Hình đại diện :"+imageurl+"n" } }  

Tiếp theo tạo 1 Lớp tỉ giá để lưu trữ mảng items

Các bạn cần nhớ là với GSon nó không quan tâm tên Lớp là gì(đặt tên gì cũng được), nó quan tâm tên thuộc tính (phải đặt chính xác như dữ liệu Json cũng cấp)

 /** * Created by cafe on 03/06/2017. */ class TiGia { var items:MutableList = mutableListOf() }  

Cuối cùng tạo hàm main để kiểm tra lấy dữ liệu từ Ngân Hàng Đông Á, chú ý ta dùng HttpURLConnection để lấy dữ liệu từ Webservice API mà Đông Á Cung cấp.:

 import com.google.gson.Gson import java.io.BufferedReader import java.io.InputStreamReader import java.net.HttpURLConnection import java.net.URL  /** * Created by cafe on 03/06/2017. */ fun main(args: Array) { var url:URL=URL("http://dongabank.com.vn/exchange/export") var connection:HttpURLConnection= url.openConnection() as HttpURLConnection var isr:InputStreamReader= InputStreamReader(connection.inputStream,"UTF-8") var br:BufferedReader=BufferedReader(isr) var s= br.readText() br.close() isr.close() s=s.replace("(","") s=s.replace(")","") var gs:Gson= Gson() var dstg:TiGia=gs.fromJson(s,TiGia::class.java) for (item in dstg.items) { println(item) println("-------------------------------") } }  

Khi chạy hàm main ở trên thì ta có kết quả sau:

Như vậy ta đã Ví dụ xong trường hợp đọc JSon từ 1 Webservice, cụ thể là Tỉ giá hối đoái của Ngân Hàng Đông Á, các bạn tự áp dụng vào các dự án cụ thể nhé. Các bài sau Tui sẽ hướng dẫn thiết kế giao diện (GUI) trong Kotlit, các bạn chú ý theo dõi nhé

Các bạn có thể tải source code bài này ở đây: http://www.mediafire.com/file/hghudhgyo53ra8g/HocJsonDongABank.rar

Hẹn gặp các bạn ở những bài tiếp theo

Chúc các bạn thành công!

Trần Duy Thanh (http://communityuni.com/)





Source link


Lượt xem : 215

Integrations
Users

Share Profile

Anyone at KeenThemes can view
Anyone with link can edit

Give Award

Anyone at KeenThemes can view
Anyone with link can edit

Report User

Let us know why you’re reporing this person
Don't worry, your report is completely anonymous; the person you're
reporting will not be informed that you've submitted it