Bỏ qua đến nội dung
Bỏ qua điều hướng
MT MT.Net.VNDigital Platform
Đăng nhập
MT.NET.VN

MT.Net.VN

Tìm kiếm
MT LEARNING · LESSON

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 […]

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


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

Zalo Messenger Gọi điện Hỗ trợ0
Home Dịch vụ Khóa học CPanel