使用JSONJoy SwiftHTTP提取数组

时间:2017-04-06 07:13:29

标签: ios swift3

我正在尝试使用SwiftHTTP库从我的响应中提取键值。 以下是我的回复:

  {
    "statusCode": 200,
    "statusMessage": "Success",
    "data": {
    "TotalCount": 3,
    "GetHomeHistory": [
       {
       "GroupType": "3",
       "GroupName": "name2",
       "MessageId": 1829,
       "ConversationId": 46,
       "DeliveryTimeStamp": "4/6/2017 4:38:12 AM",
       "MessageTranscationId": "3049",
       "MessageText": "SGVsbG8=",
       "Unread_Message_Count": 24,
       "UserId": 69
     },
     {
       "GroupType": "2",
       "GroupName": "name2,name1",
       "MessageId": 1754,
       "ConversationId": 47,
       "DeliveryTimeStamp": "3/4/2017 7:01:17 AM",
       "MessageTranscationId": "2932",
       "MessageText": "UnRncg==",
       "Unread_Message_Count": 4,
       "UserId": 69
     },
     {
       "GroupType": "1",
       "GroupName": "name3",
       "MessageId": 1753,
       "ConversationId": 49,
       "DeliveryTimeStamp": "2/28/2017 10:23:24 AM",
       "MessageTranscationId": "2931",
       "MessageText": "UnRncg==",
       "Unread_Message_Count": 1,
       "UserId": 69
     }
     ]
    }
   }

我正在尝试从“GetHomeHistory”键中提取值。该库的链接如下 JSONJoy SwiftHTTP Library

我以下列方式打电话:

struct HomeModel : JSONJoy {
let status:Int
let message:String
let totalCount: Int
var conversationHistoryArr: [ConversationHistoryModel]? =  [ConversationHistoryModel] ()


init(_ decoder: JSONDecoder) throws {

    status = try decoder["statusCode"].getInt()
    message = try decoder["statusMessage"].getString()
    if let respData = decoder["data"].dictionary  {
        if respData["TotalCount"]?.getInt() != nil {
            totalCount = (respData["TotalCount"]?.getInt())!
        } else {
            totalCount = 0
        }
        if respData["GetHomeHistory"]?.getArray(&conversationHistoryArr) != nil{

            if let homeHistoryData = decoder["GetHomeHistory"].array{
                for rsp in homeHistoryData {
                    let resp = try?  ConversationHistoryModel(rsp)
                    print(resp as Any)
                    conversationHistoryArr?.append(resp!)
                }
            }
            else{
                conversationHistoryArr = [ConversationHistoryModel]()
            }

        }


    }
    else{
        totalCount = 0
    }
}

}

ConversationHistoryModel”如下:

  struct ConversationHistoryModel : JSONJoy {

let groupType:String
let groupName:String
let messageId:Int
let conversationId:Int
let messageTime:String
let messageTransactionId:String
let messageText:String
let unreadMessageCount:Int
let userId:Int

init(_ respData: JSONDecoder) throws {
    if respData["GroupType"].getString() != nil{
        groupType = (respData["GroupType"].getString())!
    }
    else{
        groupType = ""
    }
    if respData["GroupName"].getString() != nil {
        groupName = (respData["GroupName"].getString())!
    } else {
        groupName = ""
    }
    if respData["MessageId"].getInt() != nil {
        messageId = (respData["MessageId"].getInt())!
    } else {
        messageId = 0
    }
    if respData["ConversationId"].getInt() != nil {
        conversationId = (respData["ConversationId"].getInt())!
    } else {
        conversationId = 0
    }
    if respData["DeliveryTimeStamp"].getString() != nil {
        messageTime = (respData["DeliveryTimeStamp"].getString())!
    } else {
        messageTime = ""
    }
    if respData["MessageTranscationId"].getString() != nil {
        messageTransactionId = (respData["MessageTranscationId"].getString())!
    } else {
        messageTransactionId = ""
    }
    if respData["MessageText"].getString() != nil {
        messageText = (respData["MessageText"].getString())!
    } else {
        messageText = ""
    }
    if respData["Unread_Message_Count"].getInt() != nil {
        unreadMessageCount = (respData["Unread_Message_Count"].getInt())!
    } else {
        unreadMessageCount = 0
    }

    if respData["UserId"].getInt() != nil {
        userId = (respData["UserId"].getInt())!
    } else {
        userId = 0
    }


}
}

请帮助我提取该值。

0 个答案:

没有答案