Question

Je veux analyser un fichier JSON dans mon application iPhone. Le problème est que je peux analyser des fichiers JSON simples, mais je suis confus comment faire l'analyse sur le type suivant JSON:

[{"123":  
  [{ "item_id":"222",  
     "image_count":"2",  
     "image_filetype":".jpg",  
     "image_url":"http:\/\/someurl.jpg",  
  },  
  {"item_id":"333",  
     "image_count":"2",  
     "image_filetype":".jpg",  
     "image_url":"http:\/\/someurl.jpg",  
  }]  
}]  

Peut-on m'aider à extraire tous les img_urls pour "123".

Merci.

Était-ce utile?

La solution

NSString *jsonString = …;

// The top-level object is an array
NSArray *array = [jsonString JSONValue];

// The first element in the array is an object containing a name-value
// pair for the key/name "123". The value is itself an array
NSArray *itemsIn123 = [[array objectAtIndex:0] objectForKey:@"123"];

// Use Key-Value Coding to get an array of all values for the key
// image_url
NSArray *imgurls = [itemsIn123 valueForKey:@"image_url"];


Modifier en fonction des commentaires:

Étant donné que le tableau de niveau supérieur peut être composé de plusieurs objets, chaque objet ayant une seule paire de valeurs de nom avec un nom inconnu, vous devez itérer manuellement sur le tableau de niveau supérieur:

NSString *jsonString = …;

NSMutableArray *imgurls = [NSMutableArray array];

// The top-level object is an array
NSArray *array = [jsonString JSONValue];

// Each element in the top-level array is an object
for (NSDictionary *outerObject in array) {
    // Iterate over all values in the object. Each (single) value is an array
    for (NSArray *innerArray in [outerObject allValues]) {
        [imgurls addObjectsFromArray:[innerArray valueForKey:@"image_url"]];
    }
}

Autres conseils

La valeur de l'objet "123" sera un NSARRAY de nsdictionnaires. Chacun de ces dictionnaires a une clé "image_url" pour l'URL de l'image.

Le code dépendra de la bibliothèque d'analyse JSON que vous utilisez, mais les bases devraient être les mêmes.

Vous voulez d'abord prendre les valeurs clés comme 123 112 189, nous allons donc emmener les clés dans un tableau

Dites la structure comme [Web {123 {URL d'image} 112 {URL d'image} 189 {URL d'image}

alors

 NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

 SBJSON *jsonParser = [SBJSON alloc]init];

 NSMutableArray *yourArray1 = [jsonParser objectWithString:responseString]copy]]autorelease;

    ufArray = [[yourArray1 valueForKey:@"web"] copy];

   for (NSString *s in ufArray) {

    [keys addObject:[NSDictionary dictionaryWithObjectsAndKeys:s,@"keys",nil]];
}

 NSLOG(@"keys :%@",keys);

 // this will contain 112,123,114 etc values
      initialize a NSMutableArray

      finalArray = [NSMutableArray alloc]init];

    for (int i = 0; i < [ufArray count]; i ++) {

    yourArray1 = [ufArray valueForKey:[[keys objectAtIndex:i]valueForKey:@"keys"]];

    // [keys object at indes:i] - > 123 val / next loop 112 array like that

    [finalArray addObject:yourArray1];
}


   [jsonParser release];

    jsonParser = nil;   

J'espère que cela t'aides!

Eh bien, si ce tableau était appelé jArray

var img_urls = [];
var jL = jArray[0][123].length;
var img_urls = [];
for(var i = 0; i < jL; i++){
    img_urls[i] = jArray[0][123][i].image_url;
}

//display in console: 
console.log(img_urls);

démo: http://jsfiddle.net/maniator/vx3hu/4/

Je n'ai jamais utilisé JSON auparavant, jamais utilisé iPhone auparavant, jamais utilisé Xcode auparavant ... mais je pense que c'est quelque chose dans le sens de ...

//object and image for item ID 222
123: item_id(222).image_url("some_url")

ou le deuxième et suivant les éléments

//hi
123: item_id(333).image_url("some_url")

Cependant, quelque chose de mieux serait lorsque vous pouvez extraire l'image sans l'URL en utilisant l'ID d'élément et un ID d'image, donc lorsque vous appelez l'objet 123, vous pouvez spécifier l'ID d'élément et l'ID d'image, qui publierait ensuite toutes les informations que vous exiger. Par exemple, le nombre, le type de fichier et l'image peuvent tous être affichés.

123: item_id(222).image_id(222)

Le fichier de données est-il SQL ou XML? XML est généralement plus rapide! Alors lisez les nœuds.

J'espère que cela pourra aider.

DL.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top