簡體   English   中英

iOS:無法快速將Json字符串轉換為數組?

[英]iOS: Unable to convert Json String to Array in swift?

在我的項目中,我想將Json String從服務器轉換為Array,但無法轉換,但是當我進行硬編碼(直接提供特定的json字符串)時,json字符串意味着將被轉換。 請幫助我找到問題。

在這里,我給了代碼我嘗試過的東西。

var params = NSMutableDictionary()
    params = [
        "inspectionLogId": inspectionLogIdStr
    ]
    let manager = AFHTTPSessionManager()
    manager.requestSerializer = AFJSONRequestSerializer()
    manager.responseSerializer = AFHTTPResponseSerializer()
    manager.responseSerializer.acceptableContentTypes = NSSet(array: ["text/plain", "text/html", "application/json"]) as Set<NSObject> as Set<NSObject>! as! Set<String>?
    manager.requestSerializer.setValue("", forHTTPHeaderField: "apptoken")
    manager.requestSerializer.setValue(strAppToken, forHTTPHeaderField: "token")
    let urlString:NSString = NSString(format: "%@%@", ApiConstantFile().baseUrlProperty,ApiConstantFile().getTemplateDataUrl)
    print(urlString)
    manager.get(urlString as String, parameters: params, progress: nil, success: {
        (operation, responseObject) in
        self.stopAnimation()

        let jsonstring = String(data: responseObject! as! Data, encoding: String.Encoding.utf8)
        print("jsonstring is:, \(jsonstring!)")

        let data = jsonstring!.data(using: .utf8)!
        print(data)
        do {
            if (try JSONSerialization.jsonObject(with: data, options : .allowFragments) as? [Dictionary<String,Any>]) != nil {
                let jsonArray = try JSONSerialization.jsonObject(with: data, options : .allowFragments) as! [Dictionary<String,Any>]
                print(jsonArray)
            } else {
                print("bad json")
            }
        } catch {
            print(error)
        }

    }, failure: {
        (operation, error) in
        self.stopAnimation()
        print(error)
        self.alert(message: error.localizedDescription)
    })

當我打印json字符串時,表示它們顯示為字符串:

"[{\"propertyId\":\"1\",\"inspectionTemplateId\":1118,\"value\":[{\"widgetControllerId\":141,\"value\":\"Flood Summary Name\"},{\"widgetControllerId\":142,\"value\":\"Did the property flood?\"},{\"widgetControllerId\":143,\"value\":\"no\"}]}]"

但是當我直接給出字符串時,意味着它將轉換為數組。

let jsonstring = "[{\"propertyId\":\"1\",\"inspectionTemplateId\":1118,\"value\":[{\"widgetControllerId\":141,\"value\":\"Flood Summary Name\"},{\"widgetControllerId\":142,\"value\":\"Did the property flood?\"},{\"widgetControllerId\":143,\"value\":\"no\"}]}]"

只需更換AFHTTPResponseSerializerAFJSONResponseSerializer是這樣的:

var params = NSMutableDictionary()
params = [
    "inspectionLogId": inspectionLogIdStr
]
let manager = AFHTTPSessionManager()
manager.requestSerializer = AFJSONRequestSerializer()
manager.responseSerializer = AFJSONResponseSerializer()
manager.requestSerializer.setValue("", forHTTPHeaderField: "apptoken")
manager.requestSerializer.setValue(strAppToken, forHTTPHeaderField: "token")
let urlString:NSString = NSString(format: "%@%@", ApiConstantFile().baseUrlProperty,ApiConstantFile().getTemplateDataUrl)
print(urlString)
manager.get(urlString as String, parameters: params, progress: nil, success: {
    (operation, responseObject) in
    self.stopAnimation()
    print(responseObject)

}, failure: {
    (operation, error) in
    self.stopAnimation()
    print(error)
    self.alert(message: error.localizedDescription)
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM