JSON数据限制?

时间:2013-11-21 12:06:39

标签: ios json nsdata

**我有一次在一次解析中收到了168416个字节。

-(void)getConnector        // PESQUISA
{
    NSMutableURLRequest *getJson = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@", urlEntra]]];

    [getJson setHTTPMethod:@"GET"];
    [getJson addValue:@"getValues" forHTTPHeaderField:@"METHOD"];

    receivedData = [NSMutableData data];
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:getJson delegate:self];
}

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [receivedData appendData:data];
}

使用JSON可以获得多少数据? 我收到了错误的JSON数据吗?

当我有“一些”数据时,它工作正常,但是当我有大量数据时,我无法接收,因为它有部分而JSON不能识别为单个数据。

这是我的JSON(JSONDictionaryExtensions):

NSData *receivedData = data;

NSDictionary *dictionary = [NSDictionary dictionaryWithJSONData:data];

以下是收到的数据:

NSLog(@"Dados JSON:\n%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);

良好的数据样本:

  

2013-11-21 09:10:03.916 APP [38296:70b] Dados JSON:   { “nrAutenticacao1”: “120360136”, “dtAutenticacao1”: “20/12/12”, “nrOrdem1”: “5”, “dsLivro1”: “DIARIO”, “nrAutenticacao2”: “080285899”, “dtAutenticacao2”:” 11/09/08" , “nrOrdem2”: “4”, “dsLivro2”: “DIARIO”, “nrAutenticacao3”: “070212953”, “dtAutenticacao3”: “30/07/07”, “nrOrdem3”: “3” “dsLivro3”: “DIARIO”, “nrAutenticacao4”: “070212970”, “dtAutenticacao4”: “30/07/07”, “nrOrdem4”: “2”, “dsLivro4”: “DIARIO”, “nrAutenticacao5”:” 070212961" , “dtAutenticacao5”: “30/07/07”, “nrOrdem5”: “1”, “dsLivro5”: “DIARIO”, “numLivros”:5}

     

2013-11-21 09:10:03.917 APP [38296:70b] Recebidos 495 bytes de   dados。

     

2013-11-21 09:10:03.917 APP [38296:70b]字典:{       dsLivro1 = DIARIO;       dsLivro2 = DIARIO;       dsLivro3 = DIARIO;       dsLivro4 = DIARIO;       dsLivro5 = DIARIO;       dtAutenticacao1 =“20/12/12”;       dtAutenticacao2 =“11/09/08”;       dtAutenticacao3 =“30/07/07”;       dtAutenticacao4 =“30/07/07”;       dtAutenticacao5 =“30/07/07”;       nrAutenticacao1 = 120360136;       nrAutenticacao2 = 080285899;       nrAutenticacao3 = 070212953;       nrAutenticacao4 = 070212970;       nrAutenticacao5 = 070212961;       nrOrdem1 = 5;       nrOrdem2 = 4;       nrOrdem3 = 3;       nrOrdem4 = 2;       nrOrdem5 = 1;       numLivros = 5; }

错误的数据样本:

  

2013-11-21 09:00:22.272 APP [38296:70b] Dados JSON:   { “nrAutenticacao1”: “980367425”, “dtAutenticacao1”: “25/08/98”, “nrOrdem1”: “7”, “dsLivro1”:“ATA   DE REUNIAO DE   DIRETORIA”, “nrAutenticacao2”: “080363784”, “dtAutenticacao2”: “18/12/08”, “nrOrdem2”: “9”, “dsLivro2”: “BALANCO”, “nrAutenticacao3”: “070179557”, “dtAutenticacao3” : “22/06/07”, “nrOrdem3”: “8”, “dsLivro3”: “BALANCO”, “nrAutenticacao4”: “060260726”, “dtAutenticacao4”: “06年5月10日”, “nrOrdem4”:” 7" , “dsLivro4”: “BALANCO”, “nrAutenticacao5”: “050206966”, “dtAutenticacao5”: “23/08/05”, “nrOrdem5”: “6”, “dsLivro5”: “BALANCO”, “nrAutenticacao6” : “040043258”, “dtAutenticacao6”: “04年11月3日”, “nrOrdem6”: “5”, “dsLivro6”: “BALANCO”, “nrAutenticacao7”: “030152879”, “dtAutenticacao7”:「16/10 / 03" , “nrOrdem7”: “4”, “dsLivro7”: “BALANCO”, “nrAutenticacao8”: “030152860”, “dtAutenticacao8”: “16/10/03”, “nrOrdem8”: “3”, “dsLivro8” : “BALANCO”, “nrAutenticacao9”: “030152852”, “dtAutenticacao9”: “16/10/03”, “nrOrdem9”: “2”, “dsLivro9”: “BALANCO”, “nrAutenticacao10”: “030152844”,” dtAutenticacao10 “:” 16/10/03" , “nrOrdem10”: “1”, “dsLivro10”: “BALANCO”, “nrAutenticacao11”: “990032957”, “dtAutenticacao11”: “30/03/99”, “nrOrdem11” : “3”, “dsLivro11”:“CAIXA   PAGAMENTO “ ”nrAutenticacao12“: ”990032965“, ”dtAutenticacao12“: ”30/03/99“, ”nrOrdem12“: ”2“, ”dsLivro12“:” CAIXA   PAGAMENTO “ ”nrAutenticacao13“:” 980306

     

......(很多数据)......

     

2013-11-21 09:00:22.585 APP [38296:70b] Dados JSON:   / 06/98“,”nrOrdem419“:”1“,”dsLivro419“:”DIARIO AUXILIAR   ESTOQUE”, “numLivros”:419}

     

2013-11-21 09:00:22.585 APP [38296:70b] Recebidos 81 bytes de dados。

     

2013-11-21 09:00:22.586 APP [38296:70b]   错误域= NSCocoaErrorDomain代码= 3840“操作不能   完成。 (可可错误3840.)“(JSON文本没有以数组或   允许片段未设置的对象和选项。)UserInfo = 0x9d610a0   {NSDebugDescription = JSON文本不是以数组或对象开头的   允许片段未设置的选项。}

     

2013-11-21 09:00:22.587 APP [38296:70b]字典:(null)

2 个答案:

答案 0 :(得分:1)

您的问题未与JSON相关联。您的问题是由于数据来自单独的块并且您尝试将每个块解析为单个JSON对象这一事实引起的。

您必须将数据块加入一个NSData对象(-[NSMutableData appendData:])和然后使用JSON解析器来解析它们。

答案 1 :(得分:0)

如果您从网站获取此JSON,请将该网址复制到http://jsonlint.com以验证它。

然后尝试使用NSJSONSerialization而不是JSONDictionaryExtensions。

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data
                                                     options:0
                                                       error:&error];

如果可以,那么问题在于JSONDictionaryExtensions,所以你可以联系提供它的github上的开发人员。