我需要用嵌套的对象数组解析json,我一直试图理解它的结构。
下面的Json结构
{
"data":[
{
"name":"NYSC",
"query":"NYSC",
"tweet_volume":18478,
"tweets_sata":[
{
"tweet":"RT @badt_BOI_: For every graduate going for youth service this Nov, make sure u take the Skill Acquisition Program in NYSC camp seriously,\u2026",
"user":"STEEV"
},
{
"tweet":"RT @phoonke: Take enough passports to camp. NYSC will collect passports like they want to use you for blood money. \ud83d\ude12",
"user":"EBI"
},
{
"tweet":"RT @de_s0_la: Nysc year that I was preping my nursery 2 class for exams\nI asked them animal sounds.\nMe: A cat meows & a dog___?\nWhole class\u2026",
"user":"Miyaki"
},
{
"tweet":"RT @Hisroyaldopenez: When You see your ex that NYSC posted to Borno https:\/\/t.co\/BDUWwSdW4Y",
"user":"Gbenga"
},
{
"tweet":"RT @OjokutuDaniel: If you're are from Kogi State (Kabba), studied Civil Engr (must have finished NYSC) there's a scholarship and job offer\u2026",
"user":"Ad\u00e9r\u00f3j\u00fa"
},
{
"tweet":"RT @ThisIsKennys: Osas that had already made plans about how she will go to Abuja & buy iPhone 7 within 2months because politicians... NYSC\u2026",
"user":"@i.wear.asika \u2702\ufe0f"
},
{
"tweet":"RT @hakorayday: Some of y'all ladies are just getting posted for NYSC & y'all be talking about wanting a man earning 200k. U will be OK wen\u2026",
"user":"Jollof Rice"
},
{
"tweet":"RT @de_s0_la: Nysc year that I was preping my nursery 2 class for exams\nI asked them animal sounds.\nMe: A cat meows & a dog___?\nWhole class\u2026",
"user":"Adebisi KingLY \ud83d\udc51"
},
{
"tweet":"RT @SlimDandyMUFC: People talking about NYSC everywhere but I can't relate cos school dropout https:\/\/t.co\/b2Bn0lU11l",
"user":"@i.wear.asika \u2702\ufe0f"
},
{
"tweet":"RT @Svdia_: Who are those coming to Birnin Kebbi for NYSC??! Contact me for accommodation. RT please",
"user":"Isah"
},
{
"tweet":"RT @VhickThorKING: After doing dry fasting expecting Nysc to post u to either Lagos or Port Harcourt & you magically end up in the North\ud83d\ude02\ud83d\ude2d\ud83d\ude2d\u2026",
"user":"."
},
{
"tweet":"Nysc be breaking people's hearts.\ud83d\ude05\ud83d\ude04\ud83d\ude02",
"user":"Password"
},
{
"tweet":"RT @I_pissVodka: Wearing NYSC Kaki to church isn't a bad idea...all na Service",
"user":"Obie Drakes"
},
{
"tweet":"RT @Beardrain: If you can have sex in nysc camps, you can have sex inside a dustbin",
"user":"Jollof Rice"
},
{
"tweet":"RT @Ms_DHK: People after checking their NYSC: https:\/\/t.co\/7W8IiOCcNY",
"user":"."
}
]
},
{
"name":"NYSC",
"query":"NYSC",
"tweet_volume":18478,
"tweets_sata":[
{
"tweet":"RT @badt_BOI_: For every graduate going for youth service this Nov, make sure u take the Skill Acquisition Program in NYSC camp seriously,\u2026",
"user":"STEEV"
},
{
"tweet":"RT @phoonke: Take enough passports to camp. NYSC will collect passports like they want to use you for blood money. \ud83d\ude12",
"user":"EBI"
},
{
"tweet":"RT @de_s0_la: Nysc year that I was preping my nursery 2 class for exams\nI asked them animal sounds.\nMe: A cat meows & a dog___?\nWhole class\u2026",
"user":"Miyaki"
},
{
"tweet":"RT @Hisroyaldopenez: When You see your ex that NYSC posted to Borno https:\/\/t.co\/BDUWwSdW4Y",
"user":"Gbenga"
},
{
"tweet":"RT @OjokutuDaniel: If you're are from Kogi State (Kabba), studied Civil Engr (must have finished NYSC) there's a scholarship and job offer\u2026",
"user":"Ad\u00e9r\u00f3j\u00fa"
},
{
"tweet":"RT @ThisIsKennys: Osas that had already made plans about how she will go to Abuja & buy iPhone 7 within 2months because politicians... NYSC\u2026",
"user":"@i.wear.asika \u2702\ufe0f"
},
{
"tweet":"RT @hakorayday: Some of y'all ladies are just getting posted for NYSC & y'all be talking about wanting a man earning 200k. U will be OK wen\u2026",
"user":"Jollof Rice"
},
{
"tweet":"RT @de_s0_la: Nysc year that I was preping my nursery 2 class for exams\nI asked them animal sounds.\nMe: A cat meows & a dog___?\nWhole class\u2026",
"user":"Adebisi KingLY \ud83d\udc51"
},
{
"tweet":"RT @SlimDandyMUFC: People talking about NYSC everywhere but I can't relate cos school dropout https:\/\/t.co\/b2Bn0lU11l",
"user":"@i.wear.asika \u2702\ufe0f"
},
{
"tweet":"RT @Svdia_: Who are those coming to Birnin Kebbi for NYSC??! Contact me for accommodation. RT please",
"user":"Isah"
},
{
"tweet":"RT @VhickThorKING: After doing dry fasting expecting Nysc to post u to either Lagos or Port Harcourt & you magically end up in the North\ud83d\ude02\ud83d\ude2d\ud83d\ude2d\u2026",
"user":"."
},
{
"tweet":"Nysc be breaking people's hearts.\ud83d\ude05\ud83d\ude04\ud83d\ude02",
"user":"Password"
},
{
"tweet":"RT @I_pissVodka: Wearing NYSC Kaki to church isn't a bad idea...all na Service",
"user":"Obie Drakes"
},
{
"tweet":"RT @Beardrain: If you can have sex in nysc camps, you can have sex inside a dustbin",
"user":"Jollof Rice"
},
{
"tweet":"RT @Ms_DHK: People after checking their NYSC: https:\/\/t.co\/7W8IiOCcNY",
"user":"."
}
]
}
这是我能够实现的,但我被困了
json的对象
class Trend: NSObject, JSONDecodable {
var _name: String?
var _query: String?
var _tweet_volume: Int?
var _tweets_sata: [TweetsSatum]?
required init(_ json: [String: Any]) {
super.init()
_name = json["name"] as? String
_query = json["query"] as? String
_tweet_volume = json["tweet_volume"] as? Int
_tweets_sata = json["tweets_sata"] as? [TweetsSatum]
}
class TweetsSatum: NSObject {
var _tweet: String?
var _user: String?
required init(_ json: [String: Any]) {
super.init()
_tweet = json["tweet"] as? String
_user = json["user"] as? String
}
}
JSONDecode协议
protocol JSONDecodable {
init?(_ json: [String: Any])
}
答案 0 :(得分:1)
没有自定义协议的简单解决方案 - 推文类可以限制为[String:String]
。
它为String
和Int
值使用提到的nil coalescing运算符,并为tweetsSata
创建一个默认的空数组(命名遵循Swift约定,这不是javascript或PHP )。
此外 - 为了更好的可读性,不要忽略初始化器中的参数标签是有用的。
class Trend: NSObject {
let name: String
let query: String
let tweetVolume: Int
var tweetsSata = [TweetsSatum]()
required init(json: [String: Any]) {
name = json["name"] as? String ?? ""
query = json["query"] as? String ?? ""
tweetVolume = json["tweet_volume"] as? Int ?? 0
if let tweets = json["tweets_sata"] as? [[String:String]] {
tweetsSata = tweets.map { TweetsSatum(json:$0) }
}
}
class TweetsSatum: NSObject {
let tweet: String
let user: String
required init(json: [String: String]) {
tweet = json["tweet"] ?? ""
user = json["user"] ?? ""
}
}
}
考虑使用结构而不是继承自NSObject
的类,除非您确实需要符合NSObject
协议。