1. 程式人生 > >iOS開發中上傳JSON字符串到後臺服務器

iOS開發中上傳JSON字符串到後臺服務器

在之前的開發中一般上傳給後臺服務器的各個字段的內容都是一些字符串,而最近在一個項目中卻需要上傳一個JSON字符串,由於之前沒上傳過JSON字符串所以感覺挺新鮮,於是上網查了相關知識,並在這裏記錄一下。
在上傳JSON字符串之前上海證券通首先需要獲取JSON字符串,JSON字符串其實也是由OC中的某個對象轉換過來的。轉換思路:將某個對象先通過NSJSONSerialization轉換成NSData對象,然後將這個NSData對象轉換成字符串,這樣得到的字符串就是JSON字符串。(是不是很簡單!)
看代碼:
-(NSString*)ObjectToJsonString:(id)object{

NSString *jsonString = [[NSString

alloc]init];

NSError *error;

NSData *jsonData = [NSJSONSerialization

dataWithJSONObject:object

options:NSJSONWritingPrettyPrinted

error:&error];

if (! jsonData) {

NSLog(@"error: %@", error);

} else {

jsonString = [[NSString

alloc] initWithData:jsonData

encoding:NSUTF8StringEncoding];

}

return jsonString;
}
舉例:將一個數組轉成JSON字符串
數組:
(
{
id = liangsen0;
index = 0;
name = OC0;
},
{
id = liangsen1;
index = 1;
name = OC1;
},
{
id = liangsen2;
index = 2;
name = OC2;
}
)
將上面的數組利用上面的方法轉成的JSON字符串:
[
{
"index" : 0,
"name" : "OC0",
"id" : "liangsen0"
},
{
"index" : 1,
"name" : "OC1",
"id" : "liangsen1"
},
{
"index" : 2,
"name" : "OC2",
"id" : "liangsen2"
}
]
然後這樣的JSON字符串大多數並不能滿足我們的需要(和後臺給出的JSON字符串形式不同),上面的這個JSON字符串中會有空格、換行符、反斜杠,這些特殊字符串都是我們不需要的,因此我們還需要對JSON字符串中進行處理(去掉那些我們不需要的字符)。
新的對象轉JSON的方法:
-(NSString*)ObjectTojsonString:(id)object

{

NSString *jsonString = [[NSString

alloc]init];

NSError *error;

NSData *jsonData = [NSJSONSerialization

dataWithJSONObject:object

options:NSJSONWritingPrettyPrinted

error:&error];

if (! jsonData) {

NSLog(@"error: %@", error);

} else {

jsonString = [[NSString

alloc] initWithData:jsonData

encoding:NSUTF8StringEncoding];

}

NSMutableString *mutStr = [NSMutableString

stringWithString:jsonString];

NSRange range = {0,jsonString.length};

[mutStr replaceOccurrencesOfString:@" "

withString:@""

options:NSLiteralSearch range:range];

NSRange range2 = {0,mutStr.length};

[mutStr replaceOccurrencesOfString:@"\n"

withString:@""

options:NSLiteralSearch range:range2];
NSRange range3 = {0, mutStr.length};
NSString * str = @"\\";
[mutStr replaceOccurrencesOfString:str withString:@"" options:NSLiteralSearch range:range3];

return mutStr;

}
該方法中主要就是添加了去除一些字符的方法。註意:我們在去除字符串中的“\”反斜杠時,需要使用"\\"。
最終打印的字符串:
[{"index":0,"name":"OC0","id":"liangsen0"},{"index":1,"name":"OC1","id":"liangsen1"},{"index":2,"name":"OC2","id":"liangsen2"}]


iOS開發中上傳JSON字符串到後臺服務器