如何从Json对象显示键和值

问题描述 投票:0回答:2

我正在使用Json Object在tableview中显示。我解析了Json也成功打印数据。我正在使用foreach语句将数据转换为变量但问题是我在变量json对象中的最后一项。我想显示用户名为变量以在其上显示名称

这是我的Json数据

{
"Categories": [
    "school, class"
   ],
"Tags": [
    {
        "Value": "ashok",
        "Key": "Name"
    }, {
        "Value": "III",
        "Key": "class"
    }, {
        "Value": "A",
        "Key": "section"
    }
   ]
}

这是我的模型数组

struct classInfo: Decodable {  
    let Categories: String
    let Tags: String
    let Value: String
    let Key: String
    var Name: String
    let class: String
}

这是我的代码

var ClassList = [classInfo]()

var name: String = ""
var class: String = ""

在JSONSerialization FUNCTION中

do{
            let json = try JSONSerialization.jsonObject(with: data!, options: []) as! [String: AnyObject]
            print(json as AnyObject)

            let cat = json["Categories"] as? [String: Any]
            print(cat!)

         if let array = json["Tags"] as? [[String: Any]] {
                for obj in array {
                    if let dict = obj as? NSDictionary {
                        // Now reference the data you need using:
                        let Value = dict.value(forKey: "Value")
                        let Key = dict.value(forKey: "Key")
                        print(Value!)
                        print(Key!)

                        self.name = tag["Value"] as! String
                        print(self.name)

                        self.class = tag["Value"] as! String
                        print(self.class)
                    }
                }
            }

用于行功能的细胞

    cell.Name.text = "Name:\(name)"
    cell.class.text = "class: \(class)"
ios json swift iphone nsjsonserialization
2个回答
0
投票

用这个

class ModelClass{ var name:String ; var classs:String }

class ModelDataClass { static var modelData = [ModelClass]() }

在你的viewController中。 - 在模型和cellForRowAt中添加值 - >

cell.nameTextLabel.text = ModelDataClass.modelData[indexPath.row].name
cell.classsTextLabel.text = ModelDataClass.modelData[indexPath.row].classs

0
投票

嘿,试试看,

class ModelClass {var name:String}

现在创建一个自定义tableView单元格

class CustomTableViewCell:UITableViewCell { 
    var dataModel : ModelClass?{
           didSet{
           guard let model = dataModel else {return}
           print(model.name)
           // set label text here : ex := myLabel.text = model.name

        }
     }
   // declare all IBLayouts or create them programmatically... its your choice

}

在您的tableView单元格(cellForRowAt --->)中使用此代码段

var dataModel = [ModelClass]()
dataModel = [ModelClass(name:"Rishabh"),ModelClass(name:"Adi"),ModelClass(name:"FFFf")]

现在通过使用将此数据模型传递给listDAtaModel

let cell = tableView.deq() as! CustomTableViewCell //deq() - > to lazy to type whole lol ;P type by yourself 
cell.dataModel = dataModel[indexPath.row]
© www.soinside.com 2019 - 2024. All rights reserved.