【问题标题】:JSON parser using SwiftyJson is not parsing any information using Alamofire使用 SwiftyJson 的 JSON 解析器不使用 Alamofire 解析任何信息
【发布时间】:2016-09-09 01:19:14
【问题描述】:

所以我正在下载这个 json 文件,并且该部分有效。我对其进行了测试,并且字符串 1 工作正常。但现在我正在尝试使用 JSON 选项将文件解析为类中的变量。我想我在解析器功能中正确设置了所有内容,并且下载功能工作正常。所以我认为问题在于当我试图将响应更改为 ta json 类型时。我不知道我是否做得对。 这是我目前所拥有的:

func downlaodPromoData(myUrl : String, myUser : String, myPass : String)
{
    Alamofire.request(.GET, myUrl)
        .authenticate(user: myUser, password: myPass)
        .validate(statusCode: 200..<300)
        .responseString { response in
            //print("Success: \(response.result.isSuccess)")
            //print("Response String: \(response.result.value)")
            self.downloadJson = response.result.value!
            //print("Calling parser")
            //self.parsePromoJson(self.downloadJson)


        }.responseJSON { response in
            print("Response JSON: \(response.result.value)")
            let swiftyJsonVar = JSON(response.result.value!)
            self.parseCustomerInfo(swiftyJsonVar)

            //let userJson = JSON() as! NSDictionary
            //parseCustomerInfo(userJson)


    }
}

/*
var barcodeNumber : String = ""
var customerName : String = ""
var totalPointsEarned : String = ""
var pointsEarned : String = ""
var rank : String = ""
*/
func parseCustomerInfo(json : JSON)
{
    print("Starting parsing")
    for result in json[""].arrayValue {
        barcodeNumber = result["barcode_id"].stringValue
        customerName = result["name"].stringValue
        totalPointsEarned = result["total_points_earned"].stringValue
        pointsEarned = result["points_available_to_spend"].stringValue
        rank = result["rank"].stringValue


    }
    customerName = "Gus"
    print("new Customer name" + customerName )
    print("Updateing ui")
    let myData : String = "UserName: " + customerName + "\n" + "Total Points: "  + totalPointsEarned + "\n" + "Ava Apoints: " + pointsEarned + "\n" + "Rank: " + rank
    uiResultsTextField.text.appendContentsOf(myData)

}

这是它将被解析的 Json 文件

{
  "id" : 220,
  "name" : "King Gus",
  "total_points_earned" : null,
  "points_available_to_spend" : null,
  "rank" : null,
  "order_history" : [ ],
  "barcode_id" : "C-00000220"
}

感谢您对此的任何帮助

【问题讨论】:

    标签: ios json parsing swift2 alamofire


    【解决方案1】:

    好的,新的很好,如果其他人在同一个地方,这就是我如何管理它。

      Alamofire.request(.GET, myUrl)
            .authenticate(user: myUser, password: myPass)
            .validate(statusCode: 200..<300)
            .responseString { response in
                //print("Success: \(response.result.isSuccess)")
                //print("Response String: \(response.result.value)")
                self.downloadJson = response.result.value!
                print("Json file: " + self.downloadJson)
                self.parseCustomerInfo(self.downloadJson)
    
        }
    }//end of downloadCustomer function
    
    /*
     //Customer Information
     var myBarcode : String = ""
     var myName : String = ""
     var myTotalPointsEarned : String = ""
     var myPointsEarned : String = ""
     var myRank : String = ""
     */
    
    func parseCustomerInfo(json : String)
    {
        print("Starting parsing")
        if let data = json.dataUsingEncoding(NSUTF8StringEncoding) {
            let newJson = JSON(data: data)
            myBarcode = newJson["barcode_id"].stringValue
            myName = newJson["name"].stringValue
            myTotalPointsEarned = newJson["total_points_earned"].stringValue
            myPointsEarned = newJson["points_available_to_spend"].stringValue
            myRank = newJson["rank"].stringValue
    
        }
        print("new Customer name: " + myName )
        print("Barcode number: " + myBarcode)
        print("Points Earned: " + myPointsEarned)
        print("Total points: " + myTotalPointsEarned)
        print("Rank: " + myRank)
        if myTotalPointsEarned.isEmpty{ myTotalPointsEarned = "0"}
        if myRank.isEmpty{myRank = "Baby-bee"}
        if myPointsEarned.isEmpty {myPointsEarned = "0"}
    
        //setup all the UI with the downloaded information
        barcodeNumber.text = myBarcode
        customer.text  = myName
        totalPoints.text = myTotalPointsEarned
        avaPoints.text = myPointsEarned
        rank.text = myRank
        let img = Barcode.fromString(myBarcode)
        barcode.image = img
        self.view = MyPageView
    
    
    }//of of parser function
    

    现在我知道了,知道是成功的一半

    【讨论】:

      猜你喜欢
      • 2017-05-31
      • 1970-01-01
      • 2017-10-15
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多