如何在swift 2中解析和显示JSON?

时间:2016-02-17 08:46:06

标签: ios json swift swift2

我正在尝试构建一个可以使用JSON获取和显示信息的应用。 目前,我可以在我的viewdidload中使用此代码在Debug区域中打印JSON内容:

 var url = NSURL(string: "http://myjsonlocation.php")        
    if url != nil {
        let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
            print(data)


            if error == nil {

                var urlContent = NSString(data: data!, encoding: NSASCIIStringEncoding) as NSString!

                print(urlContent)

            }
        })
        task.resume()

这是json的内容:

 {
 "playlist": [
{
  "id": "",
  "nama": "",
  "penyanyi": ""
},
{
  "id": "***",
  "nama": "PENIPUAN MENGATASNAMAKAN PT TASPEN (PERSERO)",
  "penyanyi": "PT TASPEN (PERSERO) tidak pernah membagikan deviden. Apabila ada oknum yang mengatasnamakan PT TASPEN (PERSERO) dengan menjanjikan akan membagikan deviden atau hal lainnya diluar ketentuan, itu tidak benar (PENIPUAN)"
},
{
  "id": "***",
  "nama": "JALIN KERJA SAMA LAYANAN PEMBAYARAN PENSIUN, TASPEN GANDENG BANK YUDHA BAKTI",
  "penyanyi": "PT TASPEN (PERSERO) jalin kerjasama dengan PT Bank Yudha Bhakti dalam membayarkan THT, THT Multiguna, dan Pensiun kepada peserta Taspen. Kerjasama ini diharapkan dapat menambah titik layanan kepada peserta terutama dalam memberikan pilihan bagi peserta dalam memilih kantor bayar. "
},
{
  "id": "***",
  "nama": "MENUJU PERUBAHAN MELALUI TASPEN EXECUTIVE MEETING",
  "penyanyi": "Dalam rangka meningkatkan kompetensi SDM, selama 3 hari seluruh jajaran direksi, kepala divisi, kepala desk dan kepala unit di kantor pusat beserta para kepala kantor cabang Taspen seluruh Indonesia berkumpul di Rumah Perubahan Rhenald Kasali. Mengusung tema Perubahan, peserta mengikuti rangkaian kegiatan yang ada. Dimulai dengan myelin based outbond, peserta kegiatan dibagi menjadi 6 kelompok, mengikuti permainan group yang mengedepankan kerja sama tim dalam persaingan antar tim yang kompetitif. Selesai rangkaian outbond, kegiatan berlanjut pada acara pembukaan Taspen Executive Meeting oleh Direktur Utama PT TASPEN (PERSERO), Iqbal Latanro. "
},
{
  "id": "***",
  "nama": "TASPEN BUKA KANTOR CABANG KE-53 DI LHOKSEUMAWE",
  "penyanyi": "Dalam rangka meningkatkan kualitas layanan dengan mendekatkan diri kepada peserta, Taspen kembali meresmikan Kantor Cabangnya yang ke-53. Kantor Cabang yang berlokasi di Jalan Merdeka Kota, Lhokseumawe, diresmikan secara langsung oleh Walikota Lhokseumawe, Suaidi Yahya bersama Direktur Utama PT TASPEN (PERSERO), Iqbal Latanro. Dengan dibukanya Kantor Cabang baru ini, peserta tidak perlu jauh-jauh untuk datang ke Kantor Cabang Banda Aceh. Suadi Yahya, selaku Walikota Lhokseumawe berkenan meresmikan Kantor Cabang yang ke-53 ini, dengan penuh rasa syukur dan bangga. Seperti yang disampaikan beliau dalam pidato sambutannya. Rasa syukur karena kota Lhokseumawe terpilih sebagai kota dimana cabang Taspen ini berdiri yang berada dalam cakupan layanan di wilayah Nangroe Aceh Darussalam. Kini, peserta yang berada di wilayah Kabupaten Aceh Tengah, Aceh Utara, Aceh Timur, Aceh Tenggara, Bireuen, Gayo Lues, Aceh Tamiang, Bener Meriah, Kota Langsa, dan Kota Lhokseumawe dapat langsung menuju ke Kantor Cabang Lhokseumawe untuk mengurus klimnya."
},
{
  "id": "***",
  "nama": "BUPATI ENDE RESMIKAN KANTOR CABANG TASPEN DI ENDE",
  "penyanyi": "Ende, 19 Januari 2016, PT TASPEN (PERSERO) Kantor Cabang Ende yang ke 52 kini hadir di Jalan Pahlawan No. 20 Kelurahan kota Raja Kecamatan Ende Utara, beroperasi mulai 1 Januari 2016 dan peresmiannya dilaksanakan Selasa 19 Januari 2016 oleh Bupati Ende Ir. Marselinus Y.W Petu dan Direktur Utama PT Taspen (Persero) Iqbal Latanro. Dalam sambutannya, Direktur Utama menjelaskan dengan dibukanya Kantor Taspen Cabang Ende adalah mewujudkan upaya Taspen mendekatkan layanannya dengan peserta. Dengan berbagai inovasi layanan yang ada yaitu melalui pembukaan kantor cabang baru seperti yang terlaksana di Ende, layanan klim otomatis, mobil layanan Taspen, office channeling, service point, call center Taspen, dan Taspen Mobile Application for Smartphone, Taspen berupaya untuk memberikan kenyamanan dan kemudahan bagi peserta dalam mengakses layanan yang ada."
}
]
}

在我的应用中解析和显示JSON内容的最佳方法是什么? (JSON的内容是关于最近的新闻) 我正在使用Xcode 7和swift 2.0

4 个答案:

答案 0 :(得分:1)

有一个名为SwiftyJSON的精彩库,专门用于处理JSON。 https://github.com/SwiftyJSON/SwiftyJSON

对于你的问题,假设你想在'index'获得播放列表的id(假设它是int)

  let jsonData = JSON(data)
  print (jsonData["playlist"][index]["id"].intValue) // index refers to the list index

答案 1 :(得分:0)

使用NSJSONSerialization

public class func JSONObjectWithData(data: NSData, options opt: NSJSONReadingOptions) throws -> AnyObject

答案 2 :(得分:0)

    let data = JSON(data)
    print(data["key Of dictionary"].stringValue) //stringValue can be intValue or any other according to your use

print(data["key OF dictionary"][index]["key"].stringValue) // here you can change index according to need which index value you need 

答案 3 :(得分:-1)

我使用SwiftyJSON:

https://github.com/SwiftyJSON/SwiftyJSON

例如:

let json = JSON(yourJsonObject)
let playlist = json("playlist")
if playlist.count > 0 {
    for index in 0...playlist.count-1 {
        self.ids.append(playlist[index]["id"].intValue)
        self.namas.append(playlist[index]["nama"].stringValue)
        ...
    }

现在你有一组id和名字。