JSON解析Swift 4

编程入门 行业动态 更新时间:2024-10-04 11:26:31
本文介绍了JSON解析Swift 4的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我试图解析一些JSON数据,但是遇到了一些麻烦.这是JSON:

I was trying to parse some JSON data but had some trouble. Here is the JSON:

{ "result": { "artist": { "name": "The Beatles" }, "track": { "name": "Yesterday", "text": "[Verse 1]\nYesterday\nAll my troubles seemed so far away\nNow it looks as though they're here to stay\nOh, I believe in yesterday\n\n[Verse 2]\nSuddenly\nI'm not half the man I used to be\nThere's a shadow hanging over me\nOh, yesterday came suddenly\n\n[Chorus]\nWhy she had to go\nI don't know, she wouldn't say\nI said something wrong\nNow I long for yesterday\n\n[Verse 3]\nYesterday\nLove was such an easy game to play\nNow I need a place to hide away\nOh, I believe in yesterday\n\n[Chorus]\nWhy she had to go\nI don't know, she wouldn't say\nI said something wrong\nNow I long for yesterday\n\n[Verse 4]\nYesterday\nLove was such an easy game to play\nNow I need a place to hide away\nOh, I believe in yesterday", "lang": { "code": "en", "name": "English" } }, "copyright": { "notice": "Yesterday lyrics are property and copyright of their owners. Commercial use is not allowed.", "artist": "Copyright The Beatles", "text": "All lyrics provided for educational purposes and personal use only." }, "probability": "75.00", "similarity": 1 } }

这是到目前为止的代码:

And here is my code so far:

guard let url = URL(string: "orion.apiseeds/api/music/lyric/Beatles\Yesterday?apikey=xxx") else { return } URLSession.shared.dataTask(with: url) { (data, response, error) in if error != nil { print(error!) } guard let data = data else { return } do { let data = try JSONDecoder().decode(Result.self, from: data) print(data) } catch let jsonError { print(jsonError) } }.resume() struct Result: Codable { let artist: [Artist] } struct Artist: Codable { let name: String }

我尝试运行它时遇到的错误是:

The error that I get when I try to run it is:

keyNotFound(CodingKeys(stringValue:"artist",intValue:nil), Swift.DecodingError.Context(codingPath:[],debugDescription:否 与键CodingKeys(stringValue:\"artist \", intValue:nil)(\"artist \").,underlyingError:nil))

keyNotFound(CodingKeys(stringValue: "artist", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"artist\", intValue: nil) (\"artist\").", underlyingError: nil))

我要做的就是从这首歌中获取歌词. 请耐心等待,因为我正在努力挣扎很多.

All I would like to do is get the lyrics from the song. Please could someone look at this as I am struggling quite a lot.

推荐答案

如果某些东西带有nil,请为您的模型创建一个合适的结构,将其设置为可选,否则会崩溃,将 JSON 转换为对象,您将来可以使用此在线工具,很有用! app.quicktype.io/

Create a proper struct for your model if something comes with a nil, make it optional otherwise it will crash, to convert JSON to Objects you can use this online tool for the future, is quite useful! app.quicktype.io/

struct AudioSearch: Codable { let result: Result } struct Result: Codable { let artist: Artist let track: Track let copyright: Copyright let probability: String let similarity: Int } struct Artist: Codable { let name: String } struct Copyright: Codable { let notice, artist, text: String } struct Track: Codable { let name, text: String let lang: Lang } struct Lang: Codable { let code, name: String }

并使用这样的解码:

let result = try JSONDecoder().decode(AudioSearch.self, from: data)

更多推荐

JSON解析Swift 4

本文发布于:2023-11-26 09:44:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1633610.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:JSON   Swift

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!