ここでは、URLを介してJSONを解析したいと思います。これは、URLで利用可能な実際のJSONデータです。そのため、解析して、Alamofireを使用してアプリで読み取る必要があります。しかし、私はそれをすることができません。
私のURLのJSONデータ。
[{"date":"2017-01-15","USDARS":"15.839023","USDCLP":"659.200012","USDVEF":"9.974801","USDCOP":"2943","USDPEN":"3.359497","USDBOB":"6.859692","USDPYG":"5780.799805","USDUYU":"28.660097","USDGTQ":"7.533499","USDCUP":"0.999845","USDCRC":"547.599976","USDHTG":"64.129997","USDJMD":"128.309998","USDDOP":"46.230097","USDETB":"22.459999","USDNGN":"314.999972","USDEGP":"18.900947","USDCDF":"1227.999527","USDTZS":"2216.999869","USDKES":"103.650002","USDSDG":"6.4077"},
{"date":"2017-01-16","USDARS":"15.849011","USDCLP":"662.099976","USDVEF":"9.974797","USDCOP":"2936.800049","USDPEN":"3.367975","USDBOB":"6.860284","USDPYG":"5733.700195","USDUYU":"28.749899","USDGTQ":"7.545501","USDCUP":"0.999646","USDCRC":"547.099976","USDHTG":"64.129997","USDJMD":"128.179993","USDDOP":"46.230123","USDETB":"22.39805","USDNGN":"313.999947","USDEGP":"18.898647","USDCDF":"1225.999725","USDTZS":"2221.999959","USDKES":"103.650002","USDSDG":"6.407702"},
{"date":"2017-01-17","USDARS":"15.882954","USDCLP":"656.299988","USDVEF":"9.974798","USDCOP":"2914","USDPEN":"3.3392","USDBOB":"6.860283","USDPYG":"5771.000017","USDUYU":"28.680621","USDGTQ":"7.533498","USDCUP":"0.999979","USDCRC":"547.080017","USDHTG":"64.120003","USDJMD":"128.580002","USDDOP":"46.200001","USDETB":"22.397891","USDNGN":"314.999989","USDEGP":"18.649708","USDCDF":"1225.000306","USDTZS":"2227.000108","USDKES":"103.750025","USDSDG":"6.407696"}]
swift3.0でAlamofireを使用して読み取るにはどうすればよいですか
以下は、実際にURLを介して上記のJSONデータを解析しようとしているものです。
Alamofire.request("myurl") .responseJSON { response in
print("In Alamofire")
if let arr = response.result.value as? [String:AnyObject]
{
if let arr = response.result.value as? [NSDictionary]
{
let val1 = (arr["main"]["USDARS"] as? String)
print(val1)
//It does not print any thing.
}
}
}
私を助けてください。初めてです。
Alamofire.request(url).responseJSON(completionHandler: {
response in
self.parseData(JSONData: response.data!)
})
typealias JSONStandard = [String : AnyObject]
func parseData(JSONData : Data) {
do {
var readableJSON = try JSONSerialization.jsonObject(with: JSONData, options: .mutableContainers) as! JSONStandard
if let items = readableJSON["main"] as? [JSONStandard] {
for i in 0..<items.count {
let item = items[i]
if let USDARS = item["USDARS"]
print(USDARS)
}
}
} catch {
print(error)
}
}
特定の値を印刷するには、次の2つの方法で行うことができます。
何かを検索するたびに、新しいAlamofireリクエストを作成します。
let whatToSearchFor: String = "13-02-2017"
Alamofire.request(url).responseJSON(completionHandler: {
response in
self.parseData(JSONData: response.data!)
})
typealias JSONStandard = [String : AnyObject]
func parseData(JSONData : Data) {
do {
var readableJSON = try JSONSerialization.jsonObject(with: JSONData, options: .mutableContainers) as! JSONStandard
if let items = readableJSON["main"] as? [JSONStandard] {
for i in 0..<items.count {
let item = items[i]
guard item["date"] != nil else { print("nil"); return}
guard item["USDARS"] != nil else { print("nil"); return}
if item["date"] == whatToSearchFor {
print(item["USDARS"])
}
}
}
} catch {
print(error)
}
}
すべての値を含む辞書を作成し、検索した辞書を印刷します。
let dict = [String : String]
Alamofire.request(url).responseJSON(completionHandler: {
response in
self.parseData(JSONData: response.data!)
})
typealias JSONStandard = [String : AnyObject]
func parseData(JSONData : Data) {
do {
var readableJSON = try JSONSerialization.jsonObject(with: JSONData, options: .mutableContainers) as! JSONStandard
if let items = readableJSON["main"] as? [JSONStandard] {
for i in 0..<items.count {
let item = items[i]
guard item["date"] != nil else { print("nil"); return}
guard item["USDARS"] != nil else { print("nil"); return}
let date = item["date"]
let USDARS = item["USDARS"]
dict[date] = USDARS
}
}
} catch {
print(error)
}
}
let whatToSearchFor: String = "13-02-2017"
print(dict[whatToSearchFor])
JSONに「メイン」がない場合に編集します。
let whatToSearchFor: String = "13-02-2017"
Alamofire.request(url).responseJSON(completionHandler: {
response in
self.parseData(JSONData: response.data!)
})
typealias JSONStandard = [String : AnyObject]
func parseData(JSONData : Data) {
do {
var readableJSON = try JSONSerialization.jsonObject(with: JSONData, options: .mutableContainers) as! JSONStandard
if let items = readableJSON {
for i in 0..<items.count {
let item = items[i]
guard item["date"] != nil else { print("nil"); return}
guard item["USDARS"] != nil else { print("nil"); return}
if item["date"] == whatToSearchFor {
print(item["USDARS"])
}
}
}
} catch {
print(error)
}
}
または:
let dict = [String : String]
Alamofire.request(url).responseJSON(completionHandler: {
response in
self.parseData(JSONData: response.data!)
})
typealias JSONStandard = [String : AnyObject]
func parseData(JSONData : Data) {
do {
var readableJSON = try JSONSerialization.jsonObject(with: JSONData, options: .mutableContainers) as! JSONStandard
if let items = readableJSON {
for i in 0..<items.count {
let item = items[i]
guard item["date"] != nil else { print("nil"); return}
guard item["USDARS"] != nil else { print("nil"); return}
let date = item["date"]
let USDARS = item["USDARS"]
dict[date] = USDARS
}
}
} catch {
print(error)
}
}
let whatToSearchFor: String = "13-02-2017"
print(dict[whatToSearchFor])
基本的にmain
消えます。またas? [JSONStandard]
、readableJSON
として定義されてJSONStandard
いるためです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加