當前位置:成語大全網 - 新華字典 - OC、swift數據JSON序列化後,浮點型數據丟失的問題

OC、swift數據JSON序列化後,浮點型數據丟失的問題

出現的問題:服務後端定義的數據類型為float、double時,前端進行序列化時數據精度丟失。

要麽在後端處理,定義為string類型。要麽在前端處理,將float、double轉化為string!!

註意:在序列化前調用此方法!!

+ (NSString *)doubleConvertString:(NSString *)source

{

NSString *targetStr = [NSString stringWithFormat:@"%@",source];

if (source.length == 0)

{

return targetStr;

}

NSUInteger index = 0;

NSString *p = [targetStr substringToIndex:1];

NSString *rStr = p;

NSString *lChar = p;

NSString *llid = nil;

BOOL inserted = false;

NSArray *tarry = @[@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9"];

while (index < targetStr.length-1)

{

index++;

NSString *currChar = [targetStr substringWithRange:NSMakeRange(index, 1)];

BOOL cf = [tarry containsObject:currChar];

if ([lChar isEqualToString: @":"] && cf && [llid isEqualToString:@"\""])

{

inserted = true;

rStr = [rStr stringByAppendingString:@"\""];

llid = @"";

}

else if (inserted && ([currChar isEqualToString: @"}"] || [currChar isEqualToString: @","]))

{

inserted = false;

rStr = [rStr stringByAppendingString:@"\""];

}

rStr = [rStr stringByAppendingString:currChar];

if (currChar.length > 0 && ![currChar isEqualToString:@" "])

{

if ([currChar isEqualToString:@"\""])

{

llid = currChar;

}

else if (![currChar isEqualToString:@":"])

{

llid = @"";

}

lChar = currChar;

}

}

return rStr;

}