Просмотр исходного кода

Merge pull request #48 from DaidoujiChen/feature/json_detect

enhance json detect
Ryan Olson лет назад: 11
Родитель
Сommit
a3a84b0cd7

+ 1 - 1
Classes/Network/FLEXNetworkTransactionDetailTableViewController.m

@@ -445,7 +445,7 @@ typedef UIViewController *(^FLEXNetworkDetailRowSelectionFuture)(void);
 {
     // FIXME (RKO): Don't rely on UTF8 string encoding
     UIViewController *detailViewController = nil;
-    if ([mimeType isEqual:@"application/json"] || [mimeType isEqual:@"application/javascript"] || [mimeType isEqual:@"text/javascript"]) {
+    if ([FLEXUtility isValidJSONData:data]) {
         NSString *prettyJSON = [FLEXUtility prettyJSONStringFromData:data];
         if ([prettyJSON length] > 0) {
             detailViewController = [[FLEXWebViewController alloc] initWithText:prettyJSON];

+ 1 - 0
Classes/Utility/FLEXUtility.h

@@ -35,6 +35,7 @@
 + (NSString *)statusCodeStringFromURLResponse:(NSURLResponse *)response;
 + (NSDictionary *)dictionaryFromQuery:(NSString *)query;
 + (NSString *)prettyJSONStringFromData:(NSData *)data;
++ (BOOL)isValidJSONData:(NSData *)data;
 + (NSData *)inflatedDataFromCompressedData:(NSData *)compressedData;
 
 @end

+ 6 - 1
Classes/Utility/FLEXUtility.m

@@ -278,10 +278,15 @@
     } else {
         prettyString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
     }
-
+    
     return prettyString;
 }
 
++ (BOOL)isValidJSONData:(NSData *)data
+{
+    return [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL] ? YES : NO;
+}
+
 // Thanks to the following links for help with this method
 // http://www.cocoanetics.com/2012/02/decompressing-files-into-memory/
 // https://github.com/nicklockwood/GZIP