Arrays 从json响应中获取前两个索引的数据

Arrays 从json响应中获取前两个索引的数据,arrays,swift,alamofire,indexof,swifty-json,Arrays,Swift,Alamofire,Indexof,Swifty Json,您好,我是swift新手,我正在通过Alamofire和SwiftyJON调用API,我能够成功地检索响应,但从这些数据中,我只想检索前两个数据索引,让我简要地解释一下 以下是我的回答 { "previous_inspection_list" : [ { "inspection_number" : "3", "date_inspected" : "2019-04-13", "fk_properties_id" : "2", "creat

您好,我是swift新手,我正在通过
Alamofire
SwiftyJON
调用API,我能够成功地检索响应,但从这些数据中,我只想检索前两个数据索引,让我简要地解释一下

以下是我的回答

{
  "previous_inspection_list" : [
    {
      "inspection_number" : "3",
      "date_inspected" : "2019-04-13",
      "fk_properties_id" : "2",
      "created_by" : "3",
      "signature" : "img_ZbsOx3fx1r1555154350.png",
      "status" : "1",
      "fk_user_id" : "3",
      "signature_name" : "Vishal Parmar",
      "created_date" : "2019-04-13 05:19:10",
      "updated_by" : "0",
      "inspections_id" : "8",
      "updated_date" : "0000-00-00 00:00:00"
    },
    {
      "inspection_number" : "2",
      "date_inspected" : "2019-04-13",
      "fk_properties_id" : "2",
      "created_by" : "3",
      "signature" : "img_uVQw3K4pfY1555140089.png",
      "status" : "1",
      "fk_user_id" : "3",
      "signature_name" : "Vishal Parmar",
      "created_date" : "2019-04-13 01:21:29",
      "updated_by" : "0",
      "inspections_id" : "6",
      "updated_date" : "0000-00-00 00:00:00"
    },
    {
      "inspection_number" : "1",
      "date_inspected" : "2019-04-13",
      "fk_properties_id" : "2",
      "created_by" : "2",
      "signature" : "img_g6GrjsofPE1555137646.png",
      "status" : "1",
      "fk_user_id" : "2",
      "signature_name" : "Mihir Panchasara",
      "created_date" : "2019-04-13 00:40:46",
      "updated_by" : "0",
      "inspections_id" : "3",
      "updated_date" : "0000-00-00 00:00:00"
    }
  ],
  "success" : "1",
  "message" : "Successfully."
}
你们现在可以看到我的回答,我只想检索前两个索引值,如下所示

预期产出

{
          "inspection_number" : "3",
          "date_inspected" : "2019-04-13",
          "fk_properties_id" : "2",
          "created_by" : "3",
          "signature" : "img_ZbsOx3fx1r1555154350.png",
          "status" : "1",
          "fk_user_id" : "3",
          "signature_name" : "Vishal Parmar",
          "created_date" : "2019-04-13 05:19:10",
          "updated_by" : "0",
          "inspections_id" : "8",
          "updated_date" : "0000-00-00 00:00:00"
        }
{
      "inspection_number" : "2",
      "date_inspected" : "2019-04-13",
      "fk_properties_id" : "2",
      "created_by" : "3",
      "signature" : "img_uVQw3K4pfY1555140089.png",
      "status" : "1",
      "fk_user_id" : "3",
      "signature_name" : "Vishal Parmar",
      "created_date" : "2019-04-13 01:21:29",
      "updated_by" : "0",
      "inspections_id" : "6",
      "updated_date" : "0000-00-00 00:00:00"
    }
第一指数预期产出

{
          "inspection_number" : "3",
          "date_inspected" : "2019-04-13",
          "fk_properties_id" : "2",
          "created_by" : "3",
          "signature" : "img_ZbsOx3fx1r1555154350.png",
          "status" : "1",
          "fk_user_id" : "3",
          "signature_name" : "Vishal Parmar",
          "created_date" : "2019-04-13 05:19:10",
          "updated_by" : "0",
          "inspections_id" : "8",
          "updated_date" : "0000-00-00 00:00:00"
        }
{
      "inspection_number" : "2",
      "date_inspected" : "2019-04-13",
      "fk_properties_id" : "2",
      "created_by" : "3",
      "signature" : "img_uVQw3K4pfY1555140089.png",
      "status" : "1",
      "fk_user_id" : "3",
      "signature_name" : "Vishal Parmar",
      "created_date" : "2019-04-13 01:21:29",
      "updated_by" : "0",
      "inspections_id" : "6",
      "updated_date" : "0000-00-00 00:00:00"
    }
第二指数预期产出

{
          "inspection_number" : "3",
          "date_inspected" : "2019-04-13",
          "fk_properties_id" : "2",
          "created_by" : "3",
          "signature" : "img_ZbsOx3fx1r1555154350.png",
          "status" : "1",
          "fk_user_id" : "3",
          "signature_name" : "Vishal Parmar",
          "created_date" : "2019-04-13 05:19:10",
          "updated_by" : "0",
          "inspections_id" : "8",
          "updated_date" : "0000-00-00 00:00:00"
        }
{
      "inspection_number" : "2",
      "date_inspected" : "2019-04-13",
      "fk_properties_id" : "2",
      "created_by" : "3",
      "signature" : "img_uVQw3K4pfY1555140089.png",
      "status" : "1",
      "fk_user_id" : "3",
      "signature_name" : "Vishal Parmar",
      "created_date" : "2019-04-13 01:21:29",
      "updated_by" : "0",
      "inspections_id" : "6",
      "updated_date" : "0000-00-00 00:00:00"
    }
让我给你看看我试过的代码

          let sampleArray = data.array
            let firstdict = sampleArray![0]
            print(firstdict)
            let signature_name = firstdict["signature_name"].stringValue
            let inspection_number = firstdict["inspection_number"].stringValue
            let date_inspected = firstdict["date_inspected"].stringValue
            let inspections_id = firstdict["inspections_id"].stringValue
            self.lblFirstInspName.text = signature_name
            self.lblInspNumber.text = "#\(inspection_number)"
            self.lblFirstInspDate.text = date_inspected
            self.inspID1 = inspections_id

            let secondDict = sampleArray![1]
            let signature_name1 = secondDict["signature_name"].stringValue
            let inspection_number1 = secondDict["inspection_number"].stringValue
            let date_inspected1 = secondDict["date_inspected"].stringValue
            let inspections_id2 = secondDict["inspections_id"].stringValue
            self.lblSeconfInspName.text = signature_name1
            self.lblSecondInspNumber.text = "#\(inspection_number1)"
            self.lblSecondInspDate.text = date_inspected1
            self.inspID2 = inspections_id2
请看我的代码,我得到了预期的输出,但当响应只有一个数据时,我会在第二个索引上崩溃,因为第二个索引上并没有数据
在取第二张支票之前,请有人帮我加一张保险箱支票

if let sampleArray = sampleArray, sampleArray.count > 1 {
    let secondDict = sampleArray[1]
    let signature_name1 = secondDict["signature_name"].stringValue
    let inspection_number1 = secondDict["inspection_number"].stringValue
    let date_inspected1 = secondDict["date_inspected"].stringValue
    let inspections_id2 = secondDict["inspections_id"].stringValue
    self.lblSeconfInspName.text = signature_name1
    self.lblSecondInspNumber.text = "#\(inspection_number1)"
    self.lblSecondInspDate.text = date_inspected1
    self.inspID2 = inspections_id2
}

在获取第二个安全检查之前添加一个安全检查

if let sampleArray = sampleArray, sampleArray.count > 1 {
    let secondDict = sampleArray[1]
    let signature_name1 = secondDict["signature_name"].stringValue
    let inspection_number1 = secondDict["inspection_number"].stringValue
    let date_inspected1 = secondDict["date_inspected"].stringValue
    let inspections_id2 = secondDict["inspections_id"].stringValue
    self.lblSeconfInspName.text = signature_name1
    self.lblSecondInspNumber.text = "#\(inspection_number1)"
    self.lblSecondInspDate.text = date_inspected1
    self.inspID2 = inspections_id2
}

试试这个功能。我试着把重点放在代码里

func analysis() {
        let rawData = data as! [String: Any] // Specify value type -> By doing this, you specify the type of value that is "JSON"

        let arrayPreviousInspectionList = rawData["previous_inspection_list"] as! [[String: String]] // Getting "previous_inspection_list" and specifying its type -> it's list of [String: String]

        if(arrayPreviousInspectionList.count >= 2) { // You must check the number of objects in the list
            // first index
            let firstInspection = arrayPreviousInspectionList[0]
            let signature_name = firstInspection["signature_name"]!
            let inspection_number = firstInspection["inspection_number"]!
            let date_inspected = firstInspection["date_inspected"]!
            let inspections_id = firstInspection["inspections_id"]!
            self.lblFirstInspName.text = signature_name
            self.lblInspNumber.text = "#\(inspection_number)"
            self.lblFirstInspDate.text = date_inspected
            self.inspID1 = inspections_id


            // second index
            let secondInspection = arrayPreviousInspectionList[1]
            let signature_name1 = secondInspection["signature_name"]!
            let inspection_number1 = secondInspection["inspection_number"]!
            let date_inspected1 = secondInspection["date_inspected"]!
            let inspections_id2 = secondInspection["inspections_id"]!
            self.lblSeconfInspName.text = signature_name1
            self.lblSecondInspNumber.text = "#\(inspection_number1)"
            self.lblSecondInspDate.text = date_inspected1
            self.inspID2 = inspections_id2

        } else {
            print("--- The number of inspections is less than 2")
        }
    }

希望对大家有用。我的英语也很抱歉。

试试这个功能。我试着把重点放在代码里

func analysis() {
        let rawData = data as! [String: Any] // Specify value type -> By doing this, you specify the type of value that is "JSON"

        let arrayPreviousInspectionList = rawData["previous_inspection_list"] as! [[String: String]] // Getting "previous_inspection_list" and specifying its type -> it's list of [String: String]

        if(arrayPreviousInspectionList.count >= 2) { // You must check the number of objects in the list
            // first index
            let firstInspection = arrayPreviousInspectionList[0]
            let signature_name = firstInspection["signature_name"]!
            let inspection_number = firstInspection["inspection_number"]!
            let date_inspected = firstInspection["date_inspected"]!
            let inspections_id = firstInspection["inspections_id"]!
            self.lblFirstInspName.text = signature_name
            self.lblInspNumber.text = "#\(inspection_number)"
            self.lblFirstInspDate.text = date_inspected
            self.inspID1 = inspections_id


            // second index
            let secondInspection = arrayPreviousInspectionList[1]
            let signature_name1 = secondInspection["signature_name"]!
            let inspection_number1 = secondInspection["inspection_number"]!
            let date_inspected1 = secondInspection["date_inspected"]!
            let inspections_id2 = secondInspection["inspections_id"]!
            self.lblSeconfInspName.text = signature_name1
            self.lblSecondInspNumber.text = "#\(inspection_number1)"
            self.lblSecondInspDate.text = date_inspected1
            self.inspID2 = inspections_id2

        } else {
            print("--- The number of inspections is less than 2")
        }
    }

希望对大家有用。我的英语也很抱歉。

好的,让我检查一下,这应该行。这里的关键是检查第二个索引是否存在?如果是,则继续提取它。为了安全起见,我建议您也对第一个索引应用相同的逻辑。好的,让我检查一下这是否可行。这里的关键是检查第二个索引是否存在?如果是,则继续提取它。为了安全起见,我建议您也对第一个索引应用相同的逻辑。我将使用
Codable
协议来解码JSON。另外,您希望将所有密钥保留为字符串还是希望它们是正确的整数、日期等?我将使用
Codable
协议来解码JSON。另外,您希望将所有键保留为字符串还是希望它们是正确的整数、日期等。?