我嘗試JSON編碼NSDictionary到NSArray上傳到PHP Web服務。如何JSON編碼數組從iOS到PHP
這是我JSON如何編碼我的NSArray:
NSError * error;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:my_array_1 options:0 error:&error];
NSString * jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
然後我插入這個JSON字符串到另一個陣列由:
NSString * jsonRequest = [NSString stringWithFormat: @"{\"request\":\"syncBookmark\",\"bookmark_array\":\"%@\",\"user_id\":\"%@\"}", jsonString, user_id, nil];
NSData * requestData = [NSData dataWithBytes:[jsonRequest UTF8String] length:[jsonRequest length]];
之前,我請求web服務的JSON編碼字符串是像:
{"request":"syncBookmark","bookmark_array":"[{\"PostId\":\"4\",\"last_edit_date\":\"2014-03-03 01:05:37\",\"BookmarkId\":\"1\",\"last_sync_date\":\"\",\"is_active\":\"1\"}]","user_id":"7"}
我可以在PHP中正確回顯'user_id','7',但是當我檢查t他在PHP數組 - is_array($ bookmark_array)它只是返回FALSE。我是否錯誤地將數組放入數組中?
如果你打算已經「嵌入/嵌套JSON」,其中的數據實際上是JSON編碼的兩倍請發表你的PHP代碼 –
一切額外操作時,才需要。這是不尋常的,所以你很可能不應該這樣做。而且,正如Rob所言,只需通過兩次通過JSON編碼運行數據,就可以更有效,更可靠地完成。通常,只需將數組放在字典中(或放入另一個數組中),將數組放入字典中,然後使用JSON編碼整個事物--JSON編碼器知道如何處理嵌套數組/字典。 –
(一旦你理解了,JSON非常簡單易用,如果你還沒有這樣做,去json.org花5-10分鐘學習語法。然後理解一個JSON「對象」完美地映射到iOS「NSDictionary」,並且JSON「數組」完美映射到iOS NSArray。所以,只要你有一個好的JSON編碼器/解碼器,在這兩種形式之間來回轉換就是微不足道的 - 在99%的時間內不需要其他操作。) –