IOS開発のネットワークデータ解析(一)--JSON解析の概要

2451 ワード

iOS開発のネットワークデータ解析(一)--JSON解析の概要
要旨:前言:サーバーに対して要求した後に、クライアントに返すデータ、普通はすべてJSONフォーマットあるいはXMLフォーマット(ファイルのダウンロードを除く)本編は勝手に先にJSONの解析を説明します.本文:JSONに関して:JSONは1種の軽量級のデータのフォーマットで、一般的にデータのインタラクティブなJSONのフォーマットに用いてObjective-Cの中の辞書と配列に似ています:{“name”:“jack”,“age”:10}補充:標準的なJSONフォーマットの注意点:keyは必ず二重引用符を使わなければなりません.
JSON:1 JSONについては軽量レベルのデータフォーマットであり、一般的にデータインタラクション2 JSONに用いられるフォーマットはObjective-Cの辞書や配列に似ている:{"name":"jack","age":10}補足:標準的なJSONフォーマットの注意点:keyは二重引用符でなければならない.(ただしJavaでは一重引用符)
JSON-OCの変換対照表
そのうち:null--OCのNSNullタイプを返します
students.tst
{"name":"BeJson","url":"http://www.bejson.com","page":88,"isNonProfit":true,"address":{"street":"    .","city":"    ","country":"  "}}

NSObjectに続くInforファイルの作成
import UIKit

class Infor: NSObject {
    var  isNonProfit:Int? = nil
    var name:String? = nil
    var page:Int? = nil
    var url:String? = nil
    var  address:Address? = nil
}

class Address:NSObject{
    
    var city:String? = nil
    var country:String? = nil
    var street:String? = nil
}
//
//  ViewController.swift
//  Json
//
//  Created by 。。。 on 2017/5/16.
//  Copyright © 2017  m. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        //  json    
      let path = Bundle.main.path(forResource: "students", ofType: "tst")
        //let url = URL(fileURLWithPath: path)
        let url = URL(fileURLWithPath:  path!)
        let data = try! Data(contentsOf: url)
        let dic = try!
        JSONSerialization.jsonObject(with: data, options: .allowFragments) as! [String:NSObject]
        //print(dic)
        
       //     
        let infor = Infor()
        infor.name = dic["name"] as? String
        infor.isNonProfit = dic["isNonProfit"]as?Int
        infor.page = dic ["page"]as?Int
        infor.url = dic ["url"]as?String
        
        let cityDic = dic["address"] as?[String:String]
        
        let address = Address()
        address.city = cityDic?["city"]
        address.country = cityDic?["country"]
        address.street = cityDic?["street"]
        infor.address = address
        print(infor.address?.city )

}

}