2013-06-17 17 views
8

Test ettikten sonra, 'u yalnızca [NSJSONSerialization JSONObjectWithData:options:error:] ile ayrıştırdığım JSON verilerini olumlu döndürmek için alabilirim. official documentation göre isValidJSONObject beklendiği gibi çalışmaz

:

Belirli bir nesne JSON veri dönüştürülür olabilir gösteren bir Boolean değeri döndürür isValidJSONObject

.

Ancak, NSDictionary için ben JSON'dan dönüştürmek için çalışılıyor nesneler ince dönüştürmek olmasına rağmen isValidJSONObject döner NO.

data is not JSON 
dict is JSON 

ve sonra da bu noktada çok büyük bir NSMutableDictionary nesnedir dict çıkışı,:

NSURL * url=[NSURL URLWithString:urlString]; 
NSData * data=[NSData dataWithContentsOfURL:url]; 
NSError * error=[[NSError alloc] init]; 
NSMutableDictionary * dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error]; 

if([NSJSONSerialization isValidJSONObject:data]){ 
    NSLog(@"data is JSON"); 
}else{ 
    NSLog(@"data is not JSON"); 
} 

if([NSJSONSerialization isValidJSONObject:dict]){ 
    NSLog(@"dict is JSON"); 
}else{ 
    NSLog(@"dict is not JSON"); 
} 

NSLog(@"%@",dict); 

My günlüğü aşağıdakileri içerir:

İşte benim kodudur. Bu kodu çalıştırırken hiçbir hata üretilmez, ancak data'da çalıştırıldığında isValidJSONObject yanlış değere dönüyor gibi görünüyor.

Beklendiği gibi çalışmak için isValidJSONObject nasıl edinebilirim?

+0

Bu harcanan hareketti: 'dict = [[NSMutableDictionary alloc] init];' –

+0

@Hot Licks Bunu nasıl yapmanızı önerirsiniz? – Jimmery

+0

Tamam, o satırı kaldıracağım. tavsiye için teşekkürler. – Jimmery

cevap

23

isValidJSONObject testler JSON nesnesi (NSDictionary veya NSArray a) başarılı bir şekilde JSON veri dönüştürülebilir bir yapıda olabilir.

NSData nesnesinin geçerli JSON verisi içerip içermediğini test etmek için değil. Geçerli JSON veri için test etmek için sadece

[NSJSONSerialization JSONObjectWithData:data ...] 

arayıp dönüş değeri nil olup olmadığını kontrol edin.

+1

ah, tamam, her zamanki gibi yanlış yapıyordum! :) Cevabınız için teşekkürler. – Jimmery

+2

Bunu denedim, ancak veri geçerli bir json değilse JSONObjectWithData çöküyor. – LuisEspinoza

+2

@LuisEspinoza: Deneyimimde, JSONObjectWithData, veriler geçerli JSON değilse, sıfır (ve hata parametresini ayarlar) verir. –

İlgili konular