我試圖做一個HTTP PUT請求到CouchDB服務器。我將一個NSString實例轉換爲NSData。然後,我將這個NSData實例轉換爲一個NSArray,並嘗試將其放到CouchDB中。因此,像這樣:序列化JSON沒有包裝在[]
//convert string to NSData
NSData *docData = [@"{\"name\":\"nick\"}" dataUsingEncoding:NSUTF8StringEncoding];
//NSData to NSArray
NSArray *arrayJson = [NSArray arrayWithObjects:[NSJSONSerialization JSONObjectWithData:docData options:kNilOptions error:nil],nil];
我然後創建一個使用AFNetworking HTTP PUT請求(這是RAD BTW;))
的問題是,這將創建一個JSON字符串,它看起來像:
[{"name":"nick"}]
這是有效的JSON,但沙發抱怨400壞JSON。刪除[]可以解決問題。我確定這些括號是將NSData轉換爲NSArray的結果,但我不知道如何使用NSJSONSerialization來完成此操作。誰能幫忙?
謝謝!
編輯
爲了清楚起見,讓我解釋一下,我還具有的問題。我正在使用CUTDB HTTP API使用PUT HTTP請求創建文檔。該文件可以是手工編碼的JSON,這就是爲什麼我有這個解析挑戰。沙發希望創建一個文檔。因此它期望一個單一的JSON對象。不是它們的數組。這似乎是[{「key」:「value」}]從Couch返回400 HTTP響應的原因。即使數組包含單個對象。看起來有點挑剔,API不會根據數組長度正確推斷..但我想你可以爭論任何一種方式。請參閱下面的選定答案。這是我正在尋找的。感謝所有那些迴應!
你在哪裏創建你發送的實際數據?爲什麼你需要使用NSArray? – borrrden
我寧可不使用NSArray。我希望HTTP正文包含這樣的JSON:{「name」:「nick」}。我還可以反序列化一個JSON字符串嗎?以某種方式直接向NSDictionary? – Nick
我不明白問題是什麼。你應該能夠將'docData'發送到服務器。這是一個有效的JSON字符串。 – borrrden