为什么我得到< __ NSArrayI 0x600000274e80>显示未知的NSArray

时间:2017-05-06 16:42:04

标签: ios json swift

因为我需要调用API和API Expects来接收JSON。所以我创建了想要转换成json形式的数据,如Alamofire所要求的那样。但是当我将其转换为Json并在调用Jsonobj之前打印Alamofire  < NSArrayxxxxx>显示。

NSArray Image

这里我正在转换JSON数据。

let updated_User_No :[String:Any]=["friend_list": self.new_convert_telephone_no,"user_id": user_no];
user_outer_arrary.append(updated_User_No);
user_inner_array=["user_contacts": user_outer_arrary]                    

let bytes = try! JSONSerialization.data(withJSONObject: user_inner_array, options: JSONSerialization.WritingOptions.prettyPrinted)
var jsonObj = try! JSONSerialization.jsonObject(with: bytes, options: .mutableLeaves) as! [String: Any]

print(bytes)
print(jsonObj)

更新:

Alamofire.request(myurl,parameters: jsonObj, encoding: JSONEncoding(options: [])).validate().responseJSON { response in
                debugPrint(response)  // original URL request
                print(response.response) // HTTP URL response
                print(response.data)     // server data
                print(response.result)
                switch response.result {
                case .success:
                    print("Validation Successful")
                case .failure(let error):
                    print(error)
                }// result of response serialization

                if let JSON = response.result.value
                {
                    print("JSON: \(JSON)")
                }
            }

2 个答案:

答案 0 :(得分:0)

JSONSerialization通过Objective-C工作,并创建像NSDictionaryNSArray这样的Objective-C结构。因为您已经要求.mutableLeaves" userContacts"值必须包含可变值,系统将它们保存为存储在NSMutableDictionary中的NSArray个对象,并且您看到NSArray

答案 1 :(得分:0)

也许存在误解。

您正在转换

  • 使用data(withJSONObject然后
  • 的JSON数据字典
  • 使用jsonObject(with将JSON数据返回到字典。

您需要将 bytes 发送到服务器而不是jsonObj,但是服务器并不关心美学,因此prettyprinted是不必要的。

不需要第二次转换回字典。然而,jsonObj的输出绝对正确。

永远不会传递.mutableContainers.mutableLeaves选项。它们在Swift中毫无意义,因为var iables默认是可变的。