2012-09-06 45 views
14

Tôi cần gửi NSArray tới máy chủ ở định dạng mảng JSON. Làm thế nào tôi có thể chuyển đổi nó thành JSON. Đây là một mẫu của NSArray của tôi mà tôi phải vượt qua.Chuyển đổi NSArray từ điển thành mảng JSON trong iOS

array([0] => array('latitude'=>'10.010490', 
        'longitude'=>'76.360779', 
        'altitude'=>'30.833334', 
        'timestamp'=>'11:17:23', 
         'speed'=>'0.00', 
        'distance'=>'0.00'); 

[1] => array('latitude'=>'10.010688', 
      'longitude'=>'76.361378', 
      'altitude'=>'28.546305', 
      'timestamp'=>'11:19:26', 
       'speed'=>'1.614', 
      'distance'=>'198.525711') 
)` 

và định dạng yêu cầu là như thế này

[ 
    { "latitude":"10.010490", 
    "longitude":"76.360779", 
    "altitude":"30.833334", 
    "timestamp":"11:17:23", 
     "speed":"0.00", 
    "distance":"0.00" 
    },  
    { 
    "latitude":"10.010688", 
    "longitude":"76.361378", 
    "altitude":"28.546305", 
    "timestamp":"11:19:26", 
     "speed":"1.614", 
    "distance":"198.525711" 
    } 
] 

một Bất kỳ có giải pháp? Cảm ơn trước.

Trả lời

48
NSDictionary *firstJsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys: 
          @"10.010490", @"latitude", 
          @"76.360779", @"longitude", 
          @"30.833334", @"altitude", 
          @"11:17:23", @"timestamp", 
          @"0.00", @"speed", 
          @"0.00", @"distance", 
          nil]; 

    NSDictionary *secondJsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys: 
          @"10.010490", @"latitude", 
          @"76.360779", @"longitude", 
          @"30.833334", @"altitude", 
          @"11:17:23", @"timestamp", 
          @"0.00", @"speed", 
          @"0.00", @"distance", 
          nil]; 

NSMutableArray * arr = [[NSMutableArray alloc] init]; 

[arr addObject:firstJsonDictionary]; 
[arr addObject:secondJsonDictionary]; 

NSData *jsonData2 = [NSJSONSerialization dataWithJSONObject:arr options:NSJSONWritingPrettyPrinted error:&error]; 
NSString *jsonString = [[NSString alloc] initWithData:jsonData2 encoding:NSUTF8StringEncoding]; 
NSLog(@"jsonData as string:\n%@", jsonString); 
+0

cảm ơn cho response.it làm việc –

+1

Nó làm việc cho tôi nhưng tôi muốn phản ứng trong định dạng mảng không ở định dạng chuỗi. –

+0

inline 'mã [ { "vĩ độ": "10,010490", "kinh": "76,360779", "độ cao": "30,833334", "dấu thời gian": "11:17:23", "tốc độ" : "0,00", "khoảng cách": "0.00" }, { "vĩ độ": "10,010688", "kinh": "76,361378", "độ cao": "28,546305", "dấu thời gian": "11:19:26", "tốc độ ":" 1.614 ", " khoảng cách ":" 198.525711 " } ] 'bạn sẽ nhận được nó ở định dạng Mảng chỉ – prashant

2

Bạn có thể sử dụng build in JSON functions của iOS hoặc sử dụng lib bên ngoài, ví dụ: JSONKit để chuyển đổi dữ liệu của bạn thành JSON

+0

nhờ cho phản ứng –

4

Tôi muốn giới thiệu số SBJson-Framework.

Chuyển đổi một NSMutableArray cũng đơn giản như NSString *jsonString = [yourArray JSONRepresentation];

Chỉnh sửa: Jack Farnandish là đúng u có để biến nó thành một NSDictionary trước khi bạn có thể chuyển nó sang Json. Trong ví dụ của tôi, NSMutableArray phải chứa từ điển. Mảng chỉ cần tạo các dấu ngoặc vuông ở đầu và cuối chuỗi.

+0

nhờ cho phản ứng –

2

Trước tiên Bạn phải thay đổi cấu trúc của mình thành các lớp NSDictionaryNSArray chứa NSDictionary đối tượng, sau đó thử JSONKit trong iOS 5 serialization hoạt động tốt hơn tiêu chuẩn NSJSONSerialization.

+0

nhờ cho phản ứng –

2
#import <JSONKit/JSON.h> 

NSArray *array = // Your array here. 
NSString *json = [array JSONString]; 

NSLog(@"%@", json); 

JSONKit hoạt động tốt hơn SBJson và những người khác trong các tiêu chuẩn của tác giả của riêng tôi và đáng kể.

+0

nhờ cho phản ứng –

1

Dịch vụ bạn đang gọi là dịch vụ RESTful?

Nếu có, tôi khuyên bạn nên sử dụng RestKit. Nó đối tượng serialization/deserialization. Nó cũng xử lý tất cả các nền tảng mạng. Vô cùng quý giá và được duy trì tốt.

+0

cảm ơn phản hồi –

+0

Sử dụng khuôn khổ cho một tác vụ đơn giản như vậy thực sự không phải là một ý tưởng hay. không phải là một khung được duy trì nữa – brainray

2

Kiểm tra this hướng dẫn, JSON trong iOS 5.0 đã được giải thích rõ ràng (serailization, deserailization).

3

Cách tiếp cận đơn giản và tốt nhất !!!

Để chuyển đổi NSArray hoặc NSMutableArray thành jsonString, trước tiên bạn có thể chuyển đổi nó thành NSData và sau đó chuyển đổi tiếp thành NSString. Sử dụng mã này

NSData* data = [ NSJSONSerialization dataWithJSONObject:yourArray options:NSJSONWritingPrettyPrinted error:nil ]; 
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

Nó đã giúp tôi và hy vọng nó cũng giúp bạn. Tất cả là tốt nhất.

+0

Đây là câu trả lời đúng cho tiêu đề câu hỏi. – brainray

Các vấn đề liên quan