Helpex - Trao đổi & giúp đỡ Đăng nhập

Tạo chuỗi JSON từ NSDipedia trong iOS?

Nguyễn Ðịnh Siêu
· 08:07 16/06/2011
3 ngày trước

Tôi có một dictionarytôi cần phải tạo JSON stringbằng cách sử dụng dictionary. Có thể chuyển đổi nó? Các bạn có thể vui lòng giúp đỡ về điều này?

314 hữu ích 2 bình luận 266k xem chia sẻ
Phan Quang Khánh
· 09:30 28/11/2013
09:30:27 28/11/2013

Dưới đây là các danh mục cho NSArray và NSDipedia để thực hiện việc này siêu dễ dàng. Tôi đã thêm một tùy chọn cho bản in đẹp (dòng mới và tab để dễ đọc hơn).

@interface NSDictionary (BVJSONString)
-(NSString*) bv_jsonStringWithPrettyPrint:(BOOL) prettyPrint;
@end

.

@implementation NSDictionary (BVJSONString)

  -(NSString*) bv_jsonStringWithPrettyPrint:(BOOL) prettyPrint {
     NSError *error;
     NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self
                                                   options:(NSJSONWritingOptions)    (prettyPrint ? NSJSONWritingPrettyPrinted : 0)
                                                     error:&error];

     if (! jsonData) {
        NSLog(@"%s: error: %@", __func__, error.localizedDescription);
        return @"{}";
     } else {
        return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
     } 
 }
@end

.

@interface NSArray (BVJSONString)
- (NSString *)bv_jsonStringWithPrettyPrint:(BOOL)prettyPrint;
@end

.

@implementation NSArray (BVJSONString)
-(NSString*) bv_jsonStringWithPrettyPrint:(BOOL) prettyPrint {
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self
                                                       options:(NSJSONWritingOptions) (prettyPrint ? NSJSONWritingPrettyPrinted : 0)
                                                         error:&error];

    if (! jsonData) {
        NSLog(@"%s: error: %@", __func__, error.localizedDescription);
        return @"[]";
    } else {
        return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    }
}
@end
220 hữu ích 4 bình luận chia sẻ
Lý Quang Minh
· 15:54 26/01/2012
15:54:08 26/01/2012

Apple đã thêm trình phân tích cú pháp và trình tuần tự hóa JSON trong iOS 5.0 và Mac OS X 10.7. Xem NSJSONSerialization .

Để tạo chuỗi JSON từ NSDadata hoặc NSArray, bạn không cần nhập bất kỳ khung bên thứ ba nào nữa.

Đây là cách làm:

NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionaryOrArrayToOutput 
                                                   options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
                                                     error:&error];

if (! jsonData) {
    NSLog(@"Got an error: %@", error);
} else {
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
721 hữu ích 5 bình luận chia sẻ
Phạm Chiêu Quân
· 10:47 21/03/2014
10:47:50 21/03/2014

Để chuyển đổi NSDipedia thành NSString:

NSError * err;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:myDictionary options:0 error:&err]; 
NSString * myString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
59 hữu ích 0 bình luận chia sẻ
Dương Minh Nghĩa
· 08:21 16/06/2011
08:21:32 16/06/2011

LƯU Ý: Câu trả lời này đã được đưa ra trước khi iOS 5 được phát hành.

Lấy khung json và làm điều này:

#import "SBJsonWriter.h"

...

SBJsonWriter *jsonWriter = [[SBJsonWriter alloc] init];

NSString *jsonString = [jsonWriter stringWithObject:myDictionary];  

[jsonWriter release];

myDictionary sẽ là từ điển của bạn.

35 hữu ích 3 bình luận chia sẻ
Trần Ðình Diệu
· 13:23 29/11/2013
13:23:01 29/11/2013

Bạn cũng có thể thực hiện việc này một cách nhanh chóng bằng cách nhập thông tin sau vào trình gỡ lỗi

po [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:yourDictionary options:1 error:nil] encoding:4];
23 hữu ích 3 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ ios objective-c json string , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm