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
NSObjectに続くInforファイルの作成
要旨:前言:サーバーに対して要求した後に、クライアントに返すデータ、普通はすべて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 )
}
}