- samplecode.swift Select all
import Foundation
let str1 = "{\"names\": [\"Bob\", \"Tim\", \"Tina\"]}"
let str2 = "{\"names\": [\"Bob2\", \"Tim2\", \"Tina2\"]};"
for str in [str1, str2] {
let data = str.data(using: String.Encoding.utf8)
// let data = str.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) // Swift 2
do {
let json = try JSONSerialization.jsonObject(with: data!) as! [String: AnyObject]
// let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) // Swift 2
print(json)
if let names = json["names"] as? [String] {
print(names)
}
} catch let error as NSError {
print(str)
print("Failed to load: \(error.localizedDescription)")
}
}
Sample Code with json from url in swift 3 (Xcode 8 beta 6) with Swift 2 code shown beneath
- samplecode.swift Select all
import Foundation
struct Video {
var name: String
var url: String
}
var musicvideo:[Video]=[]
typealias JSONDictionary = [String: AnyObject]
typealias JSONArray = Array<AnyObject>
let url = Foundation.URL(string: "https://itunes.apple.com/us/rss/topmusicvideos/limit=3/json")
//let url = NSURL(string: "https://itunes.apple.com/us/rss/topmusicvideos/limit=3/json") // Swift 2
do {
let data = try Data(contentsOf: url!)
// let data = NSData(contentsOfURL: url!) // Swift 2
let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as! JSONDictionary
// .allowFragments - top level object is not Array nor Dictionary.
// let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) // Swift 2
if let feed = json["feed"] as? JSONDictionary,
let entries = feed["entry"] as? JSONArray {
// entries = feed["entry"] as? JSONArray { // Swift 2
//print(entries)
for (index, entry) in entries.enumerated() {
// for (index, entry) in entries.enumerate() { // Swift 2
//print("\(index) is \(entry)")
if let name = entry["im:name"] as? JSONDictionary,
let vName = name["label"] as? String, // SE-0099 XCode 8 beta 4
// vName = name["label"] as? String, // Swift 2
let video = entry["link"] as? JSONArray, // SE-0099 XCode 8 beta 4
// video = entry["link"] as? JSONArray, // Swift 2
let vUrl = video[1] as? JSONDictionary, // SE-0099 XCode 8 beta 4
// vUrl = video[1] as? JSONDictionary, // Swift 2
let vHref = vUrl["attributes"] as? JSONDictionary, // SE-0099 XCode 8 beta 4
// vHref = vUrl["attributes"] as? JSONDictionary, // Swift 2
let vVideoUrl = vHref["href"] as? String // SE-0099 XCode 8 beta 4
// vVideoUrl = vHref["href"] as? String // Swift 2
{
print(vName)
print(vVideoUrl)
musicvideo.append(Video(name: vName, url:vVideoUrl))
}
}
}
} catch let error as NSError {
print("Failed to load: \(error.localizedDescription)")
}
let jsonDict = musicvideo.map { return ["name":$0.name, "url":$0.url]}
print(jsonDict)