[iOS Dev] JSON Parsing with JSONKit

JSON (Javascript Object Notation)
เป็น Format ข้อมูลชนิดนึง ที่ได้รับความนิยม ไม่แพ้ XML เลย ถูกใช้กันอย่างแพร่หลาย
เช่นใน Facebook SDK ก็ใช้

โดยมีเว็บหลักคือ

http://json.org/

และสามารถเข้าไปดูตัวอย่าง format ของข้อมูลได้ที่นี่

http://json.org/example.html

วันนี้ผมจะเขียนถึงเรื่องการ Parsing JSON บน iOS กัน ...
โดยจะ Parse มาใส่ UITableView เฉพาะชื่อ Title เท่านั้น

ไฟล์ *.json ที่ผมเตรียมไว้มีข้อมูลตามนี้ครับ

จะเห็นได้ว่า ไฟล์ของผมมี Array อยู่ 1 ชุดชื่อ 'docterme'
และ ข้างในเป็น Dictionary ซึ่งมี key ด้วยกัน 4 ตัว ..

ขั้นตอนแรกไป clone Repository ของ JSONKit มาก่อนเลยครับ (Download นั่นแหละ)

https://github.com/johnezang/JSONKit

เมื่อได้มาแล้ว ก็ลากทั้ง JSONKit และไฟล์ข้อมูล .json ที่เราเตรียมไว้ลง Project ซะ (ของผม content.json)


และอีกเรื่องนึงที่ควรรู้ เมื่อกด Build (cmd + b) ครั้งแรกก็คือ JSONKit ไม่รองรับ ARC (Automatic Reference Counting) ถ้าคุณไม่ได้ใช้ ก็ไม่ต้องกังวล แต่ถ้าคุณใช้ ARC (เลือกได้ตอน Create Project)
ต้องไปใส่ Flag No ให้มันก่อน

โดยคลิกไปที่ Project ของคุณครับ จากนั้นเลือกที่ Build Phase -> Compile Sources
ที่ JSONKit.m คลิกแล้วใส่ไปตามภาพเลยครับ


ยังมีอีกหลาย Library ที่ไม่รองรับนะครับ เช่น ASIHTTPRequest แล้วต้องใส่เยอะกว่านี้ด้วย ฮ่าฮ่า

จากนั้นก็ #import "JSONKit.h" เข้ามาใน Project นะครับ (อย่าลืมล่ะ !!)

ต่อไปเราจะพบกับความง่ายแสนง่าย ในการ Parsing JSON ซึ่งใช้โค้ดแค่ 1 บรรทัดเองครับ


ส่วนที่ใช้ในการ Parsing มีแค่บรรทัดเดียวคือ


ส่วนใน initData method ผมขออธิบายดังนี้

บรรทัดแรกเป็นการเข้าถึง sandbox เพื่ออ้างถึงไฟล์ content.json
บรรทัดที่สอง เป็นการเอา NSData มารับข้อมูลของ content.json ไว้
บรรทัดที่สาม เป็นการนำ NSDictionary มารับข้อมูลของ NSData อีกที
บรรทัดที่สี่ ผมเอา NSArray มารับข้อมูลไว้ที่ key 'docterme' ซึ่งเป็น key ที่มี array อยู่ด้านใน

ส่วนโค้ดส่วนอื่นๆ ที่เอามาให้ดู เป็นการนำข้อมูลขึ้น UITableView และเรียกใช้ initData แค่นั้นเอง :P

จริงๆ การ Parsing JSON ยังมีอีก Library นึงที่นิยมใช้กัน นั่นคือ SBJSON ซึ่งผมก็ยังไม่เคยลองใช้
แต่เคยเห็นโค้ดแล้ว ก็ไม่น่าจะต่างกันนะ ... ไว้เดี๋ยวจะลองเล่นบ้าง ...

Popular posts from this blog

[Android Dev] การติดตั้ง Eclipse+AndroidSDK เพื่อพัฒนาโปรแกรมบน Android

12 วิธี การบริการและดูแลลูกค้าในร้าน Starbucks

5 TED Talk ที่จะช่วยให้คุณทำงานดีขึ้น