Comment créer le modèle de classe pour la suite de données JSON et l'analyser?
Mes données JSON
{
"addon_items" : [
{
"aname" : "",
"id" : "2588",
"name" : "Plain Nan",
"order" : "1",
"aid" : "259",
"Sub_Add_Items" : "",
"icon" : "",
"status" : "1",
"next" : "0",
"price" : "0.60"
},
{
"aname" : "",
"id" : "2589",
"name" : "Pitta Bread",
"order" : "2",
"aid" : "259",
"Sub_Add_Items" : "",
"icon" : "",
"status" : "1",
"next" : "0",
"price" : "0.00"
}
],
"addon" : {
"description" : "Please choose your Nan bread",
"aname" : "",
"id" : "259",
"icon" : "",
"limit" : "1",
"special_addon" : "",
"next" : "165"
}
}
J'ai créé trois modèles de la classe nommé AddOnResponse, AddOn, AddOnItems comme ceci:
AddOnResponse modèle de classe
class AddOnResponse {
var addon: Array<String>?
var addonitems: Array<AnyObject>?
init(addon:Array<String>?,addonitems: Array<AnyObject>?){
self.addon = addon
self.addonitems = addonitems
}
}
AddOn modèle de classe
class AddOn {
var id: Int?
var icon: String?
var desc: String?
var limit: Int?
var next: Int?
var aname: String?
var specialaddon: Int?
init(id: Int?,icon: String?,desc: String?,limit: Int?,next: Int?,aname: String?,specialaddon: Int?){
self.id = id
self.icon = icon
self.desc = desc
self.limit = limit
self.next = next
self.aname = aname
self.specialaddon = specialaddon
}
}
AddOnItems modèle de classe
class AddOnItems {
var id: Int?
var aid: Int?
var name: String?
var price: Int?
var order: Int?
var status: Int?
var next: Int?
var aname: String?
var subaddItems: Int?
var icon: String?
init(id: Int?,aid: Int?,name: String?,price: Int?,order: Int?,status: Int?,next: Int?,aname: String?,subaddItems: Int?,icon: String?){
self.id = id
self.aid = aid
self.name = name
self.price = price
self.order = order
self.status = status
self.next = next
self.aname = aname
self.subaddItems = subaddItems
self.icon = icon
}
}
Maintenant, je suis aller chercher mes données JSON à l'aide de Alamofire mais lors de l'acceptation de dat en classe de modèle à l'aide de l'objet, je suis nulle valeur.
var addonResponses = [AddOnResponse]()
Alamofire.request(.GET, myAddOnUrl)
.validate()
.responseJSON
{ response in
switch response.result
{
case .Success:
if let value = response.result.value{
let json = JSON(value)
print(json)
print(json["addon"].arrayValue)
for(_,content) in json{
let addOnRes = AddOnResponse(addon:content["addon"].arrayValue,
addonitems:content["addon_items"].Arrayobject)
print(self.addonResponses.count)
print(addOnRes.addon)
print(addOnRes.addonitems)
}
}
L'addon et addonitems données sont à venir néant, pourquoi?
Utilisez Brillant plutôt que de Swifty-json , si vous sera utile.
cause
ok, alors dites moi la solution ,, hwz le modèle de classe doit être pour "addon" et " addon_items et les moyens de les faire passer dans le modal@ÖzgürErsil
Merci, mais la plupart de la partie j'ai manipulé à l'aide de swiftyJson. donc, je ne veux pas utiliser un autre tiers..donc si aucune solution en ce qui concerne cela, aidez-moi.. @Md.MuzahidulIslam
Oui convenu @iMuzahid, brillant rendra la tâche beaucoup plus facile si vous pouvez utiliser codable trop, essayer différents modèles, vous pouvez générer ici jsoncafe.com
cause
addon_items
est un tableau et addon
est un dictionnaireok, alors dites moi la solution ,, hwz le modèle de classe doit être pour "addon" et " addon_items et les moyens de les faire passer dans le modal@ÖzgürErsil
Merci, mais la plupart de la partie j'ai manipulé à l'aide de swiftyJson. donc, je ne veux pas utiliser un autre tiers..donc si aucune solution en ce qui concerne cela, aidez-moi.. @Md.MuzahidulIslam
Oui convenu @iMuzahid, brillant rendra la tâche beaucoup plus facile si vous pouvez utiliser codable trop, essayer différents modèles, vous pouvez générer ici jsoncafe.com
OriginalL'auteur PRADIP KUMAR | 2016-07-27
Vous devez vous connecter pour publier un commentaire.
Après votre réponse JSON, ce que je vois c'est que vous avez un objet qui a deux nœuds(ou propriétés).
D'abord- "addon_items" qui a comme matrice et pour lequel vous avez créé une classe AddOnItems ce qui est correct.
Deuxième "addon": cette clé ici est une référence à une "Dictionnaire" plutôt qu'à un tableau.
Afin de stocker la réponse dans votre AddOnResponse objet, essayez le code suivant.
Également apporter des modifications à votre AddOnResponse classe
TL;DR
Votre réponse JSON n'est pas correctement correspondent au modèle que vous avez faits dans votre application. Vérifiez le "addon" la clé de votre réponse json qui a un dictionnaire de l'objet et non PAS UN TABLEAU, et en conséquence de faire de votre modèle de classes.
Edit: Rectification de l'erreur au point de l'erreur de casting.
Ce que je voudrais maintenant vous suggérons, c'est que passer de l'objet JSON pour " add_on la touche. Dans l'AddOn le changement de classe de l'initialiser, de sorte qu'il faut un objet JSON. Puis initialisation de leur utilisation.
AddOn Classe Initialiser
De la même manière, de faire de même pour AddOnItems. Et dans le AddOnResponse initialiser itérer dans une boucle de l'objet JSON pour AddOnItems. Initialiser et ajouter à la addOnItems propriété de tableau.
Désolé, impossible d'écrire le code pour l'instant. A obtenu une contrainte de temps.
erreur " Impossible de convertir une valeur de type '[Chaîne : JSON]' type '[Chaîne : AnyObject] "dans la contrainte"
Ne jette pas comme un [Chaîne: AnyObject]. Cette erreur était là parce qu'il y a plus de données imbriquées. Les jeter au moment de passer à l'initialiser. La raison de ce que chaque nœud dans un objet JSON (SwiftJSON) est de type JSON jusqu'à ce que et à moins que vous le lancez pour la dernière descendante.
encore problème. pourriez-vous en mesure de modifier votre réponse en conséquence
J'ai eu la AddOnResponse avec quelques modifications comme je l'ai posté dans ma réponse. Merci
OriginalL'auteur nishantdesai
OriginalL'auteur Ved Rauniyar
Après de nombreuses expériences, j'ai eu la réponse. J'ai pour transmettre les données à des objets comme de cette façon. j'ai suivi @nishantdesai réponses et de faire quelques modifications..
OriginalL'auteur PRADIP KUMAR
De l'essayer. Je l'ai fait à l'aide de
AlamofireObjectMapper
. VérifierAlamofireObjectMapper
pour plus d'infoOriginalL'auteur Prashant Ghimire
Très simple à créer de la classe du modèle, veuillez suivre la procédure ci-dessous.
Créer swift de la classe avec le nom "Échantillon", écrire le code comme ci-dessous.
et également créer un plus swift classe que "plus de Détails" code comme ci-dessous,
et dans votre viewcontroller avant
viewdidload()
la méthode de créer un objet de Précisions de la classe commeAprès avoir obtenu la réponse de alamofire demande de la méthode, l'appel à la méthode ci-dessous:
De données n'est rien, mais la réponse que vous obtenez à partir de alamofire.
Plus tard, vous pouvez accéder aux variables comme ci-dessous:
et vous pouvez l'afficher.
il suffit de suivre la procédure ci-dessus , je l'avais mentionné très clairement. Si vous avez des doutes, je peux vous aider.
Je vais avoir un Json comme ceci json-generator.com/api/json/get/cwqUAMjKGa?indent=2 j'ai besoin d'utiliser deux classes de modèle pour les enfants et un autre pour les produits @Arshad Shaik
et j'ai besoin d'afficher, comme indiqué dans l'image comme ceci i.stack.imgur.com/d3U1p.png
si possible de m'aider je suis un stagiaire donc je ne sais pas comment le faire @Arshad Shaik
OriginalL'auteur Arshad Shaik
Vous pouvez utiliser ObjectMapper
OriginalL'auteur ajaykoppisetty