2015-04-16 28 views
1

我想從我擁有的數組中創建JSON數組字符串。但是我得到無效的JSON。
這就是我想要的:從swift中的字典數組中獲取無效的JSON數組

[ 
    { 
     "validationCode": null, 
     "FirstName": "Samer", 
     "LastName": "Shame", 
     "MobileNumber": "0991992993", 
     "SimNumber": null, 
     "Email": null, 
     "PhoneNumber": "0991992994", 
     "Name": "Abo Alshamat", 
     "ID": 1 
    }, 
    { 
     "validationCode": null, 
     "FirstName": "Ahmad", 
     "LastName": "Ali", 
     "MobileNumber": "0992993994", 
     "SimNumber": null, 
     "Email": null, 
     "PhoneNumber": "0992993995", 
     "Name": "AL-Kamal", 
     "ID": 2 
    } 
] 

而這就是我得到:

[ 
    [ 
     "validationCode": null, 
     "FirstName": "Samer", 
     "LastName": "Shame", 
     "MobileNumber": "0991992993", 
     "SimNumber": null, 
     "Email": null, 
     "PhoneNumber": "0991992994", 
     "Name": "Abo Alshamat", 
     "ID": 1 
    ], 
    [ 
     "validationCode": null, 
     "FirstName": "Ahmad", 
     "LastName": "Ali", 
     "MobileNumber": "0992993994", 
     "SimNumber": null, 
     "Email": null, 
     "PhoneNumber": "0992993995", 
     "Name": "AL-Kamal", 
     "ID": 2 
    ] 
] 

這是代碼:

var data = [NSDictionary]() 
for item in someList { 
    var d = ["validationCode": null, 
      "FirstName": item.prop1, 
      "LastName": item.prop2, 
      "MobileNumber": item.prop3...] 

    data.append(d) 
} 
var bytes = NSJSONSerialization.dataWithJSONObject(data, options: NSJSONWritingOptions.allZeros, error: nil) 
var jsonObj = NSJSONSerialization.JSONObjectWithData(bytes!, options: nil, error: nil) as! [Dictionary<String, String>] 

我應該怎麼做才能得到標準的JSON格式?

+0

你怎麼使用VAR d寫更多關於無功數據和變種d – Bhoomi

+0

我更新的代碼?我遍歷列表並創建字典'd'並將它們添加到字典'data'的列表中。然後,我將所有內容都轉換爲JSON,但我得到'[[],[],[]]'而不是'[{},{},{}]' – 1110

+0

嘗試將[NSDictionary]()更改爲[[String:AnyObject ]]() – Arbitur

回答

2

您正在將SwiftCollectionType轉換爲JSON(bytes),然後將其轉換回(jsonObj)。

在這種情況下bytesJSONNSDatajsonObj是夫特CollectionType

所以,當你print(jsonObj)你不打印JSON,你正在打印集合。

要獲得真正的JSON

print(NSString(data: bytes, encoding: NSUTF8StringEncoding)) 

在這裏你會看到正確的JSON格式。

在Swift中,JSON是一個字符串。不是一個對象。


您的代碼應在於這一點:

let json = NSJSONSerialization.dataWithJSONObject(data, options: nil, error: nil)! 

let jsonString = NSString(data: json, encoding: NSUTF8StringEncoding)! 

println(jsonString) 
+0

只是一個子問題。當把這個發送到Web服務時,我應該像在這裏寫的那樣發送'jsonString'。我對嗎? – 1110

+0

是的,你發送它像一個正常的字符串。 – Arbitur

+0

好的。比你非常。 – 1110