2011-04-04 6 views
0

Je voudrais analyser un fichier CSV complexe. J'ai cherché des sources sur le web mais je n'ai trouvé des lecteurs que pour des csv simples avec des marques de coma et de guillemets. Mais le mien contient aussi "{", "[" et ":" afin de créer des groupes, sous-groupes ...iPhone: Complex CSV Parser

Comment puis-je récupérer un NSArray ou un NSDictionary de ce type de csv? Ou connaissez-vous un excellent (excellent!) Lecteur/analyseur csv?

Merci!

Voici un exemple:

{ "méta": { "code": 200}, "réponse": { "groupes": [{ "type": "à proximité", "name" : "√Ä proximit√ ©", "items": [{"id": "4bc88ad72f94d13aa9c5137f", "nom": "Mà © tro Chaussà © e d'Antin - La Fayette [7,9] "," contact ": {}," location ": {" adresse ":" Mà © tro Chaussà © e d'Antin - La Fayette "," ville ":" Paris "," État ":" √éle de France "," postalCode ":" 75009 "," lat ": 48.872908," lng ": 2.33325," distance ": 39}," catégories ": [{" id ":" 4bf58dd8d48988d1fd931735 "," nom ":" Subways "," icon ":" ht tp: //foursquare.com/img/categories/travel/subway.png "," parents ": [" Travel Spots "]," primary ": true}]," verified ": false," stats ": { "checkinsCount": 885, "usersCount": 368}, "hereNow": {"count": 0}}, {"id": "4ba8e508f964a520e4f739e3", "nom": "AdenClassifieds", "contact": {}, "location": {"adresse": "1-3 rue La Fayette", "ville": "Paris", "état": "France", "postalCode": "75009", "lat": 48.8733461, "lng": 2.3340489, "distance": 50}, "categories": [{"id": "4bf58dd8d48988d124941735", "name": "Bureaux", "icon": "http://foursquare.com/img/ categories/building/default.png "," parents ": [" Maisons, Travail, Autres "]," primaire ": vrai}]," vérifié ": faux," stats ": {" checkinsCount ": 187, "usersCount": 29}, "hereNow": {"count": 0}}, {"id": "4c10cd34b4aeef3bad5afc0f", "name": "AdenSourcing", "contact": {}, "emplacement": {" adresse ":" 1, rue La Fayette "," ville ":" Paris "," état ":" France "," postalCode ":" 75009 "," lat ": 48.873009," lng ": 2.333263," distance ": 28}," catégories ": [ {"id": "4bf58dd8d48988d125941735", "name": "Tech Startups", "icon": "http://foursquare.com/img/categories/building/default.png", "parents": ["Maisons , Travail, Autres "," Bureaux "]," primaire ": true}, {" id ":" 4bf58dd8d48988d174941735 "," name ":" Coworking Espaces "," icon ":" http: // foursquare. com/img/categories/building/default.png "," parents ": [" Maisons, Travail, Autres "," Bureaux "]}]," vérifié ": faux," stats ": {" checkinsCount ": 60, "usersCount": 7}, "hereNow": {"count": 0}}, {"id": "4b6d79c2f964a520f6762ce3", "name": "Négatif +", "contact": {}, " emplacement ": {" adresse ":" 106 rue lafayette "," ville ":" Paris "," état ":" France "," postalCode ":" 75010 "," lat ": 48.873035," lng ": 2,333 235, "distance": 26}, "categories": [{"id": "4bf58dd8d48988d1ff941735", "name": "Divers Boutiques", "icon": "http://foursquare.com/img/categories/ shops/default.png "," parents ": [" Magasins "]," primary ": true}]," verified ": false," stats ": {" checkinsCount ": 121," usersCount ": 51}," hereNow ": {" count ": 0}}, {" id ":" 4beeb21a2c082d7f96b53042 "," name ":" Sephora Haussmann "," contact ": {}," location ": {" adresse ":" 23 bd Hausmann "," ville ":" Paris "," état ":" Ile-de-France "," lat ": 48.8728835," lng ": 2.3334661," distance ": 41}," categories ": [{ "id": "4bf58dd8d48988d10c951735", "name": "Cosmétiques Boutiques", "icon": "http://foursquare.com/img/categories/shops/beauty_cosmetic.png", "parents": ["Boutiques" ], "primary": true}], "vérifié": false, "stats": {"checkinsCount": 135, "usersCount": 75}, "hereNow": {"count": 0}}, {"id ":" 4af55e08f964a520f3f821e3 "," nom ":" Chez Jean "," contact " ": {}," location ":" 4 rue La Fayette "," ville ":" Paris "," état ":" France "," postalCode ":" 75009 "," lat " : 48.8731558, "lng": 2.3334978, "distance": 13}, "categories": [{"id": "4bf58dd8d48988d118951735", "name": "Épicerie Magasins", "icon": "http://foursquare.com/img/categories/ shops/food_grocery.png "," parents ": [" Boutiques "," Aliments et boissons Boutiques "]," primaire ": vrai}]," vérifié ": faux," stats ": {" checkinsCount ": 46, "usersCount": 27}, "hereNow": {"count": 0}}, {"id": "4bee9a52e8c3c928dfd89892", "name": "H & M", "contact": {}, "emplacement": {"lat": 48.872951, "lng": 2.333551, "distance": 35}, "catégories": [{"id": "4bf58dd8d48988d104951735", "nom": "Boutiques", "icône": "http://foursquare.com/img/categories/shops/apparel.png","parents":["Shops","Vêtements Magasins "]," primary ": true}]," verified ": false," stats ": {"checkinsCount": 84, "usersCount": 66}, "hereNow": {"count": 0}}, {"id": "4b51d04df964a520865627e3", "nom": "Surcouf", "contact": {} , "location": "adresse": "21, bd Haussmann", "ville": " Paris "," état ":" France "," code postal ":" 75009 "," lat ": 48.8728008," lng ": 2.3339615," distance ": 65}," catégories ": [{" id ":" 4bf58dd8d48988d122951735 "," name ":" High Tech Points de vente "," icon ":" http://foursquare.com/img/categories/shops/technology.png "," parents ": [" Shops "]," primary " ": true}]," vérifié ": false," stats ": {" checkinsCount ": 332," usersCount ": 194}," hereNow ": {" count ": 0}}, {" id ":" 4b1e6795f964a5209a1924e3 "," name ":" Le Manoir "," contact ": {", "location": {"adresse": "34 Boulevard Haussmann", "ville": "Paris", "état": "France "," postalCode ":" 75009 "," lat ": 48.872964707066394," lng ": 2.334015369415283," distance ": 56}," catégories ": [{" id ":" 4bf58dd8d48988d16d941735 "," nom ":" Caf√ "S", "icon": "http://foursquare.com/img/categories/food/cafe.png", "parents": ["Food"], "primary": true}], "vérifié": false, "stats": {"checkinsCount": 116, "usersCount": 61}, "hereNow": {"count": 0}}, {"id" : "4cb59ee81b0af04dca42ca25", "nom": "Casa Del Campo", "contact": {}, "location": {"adresse": "Rue Lafayette", "ville": "Paris", "état" : "Ile-de-France", "lat": 48.873035, "lng": 2.333235, "distance": 26}, "categories": [{"id": "4bf58dd8d48988d1db931735", "name": "Tapas Restaurants "," icon ":" http://foursquare.com/img/categories/food/default.png "," parents ": [" Food "]," primary ": true}]," vérifié ": false, "stats": {"checkinsCount": 12, "usersCount": 11}, "hereNow": {"count": 0}}, {"id": "4cdd43c0d5495481874446b2", "nom": "Thalys Paris> Bruxelles "," contact ": {}," location ": {" adresse ":" 111 rue Lafayette "," ville ":" Paris "," état ":" Ile-de-France "," postalCode " : "75011", "lat": 48.873035, "lng": 2.333235, "distance": 26}, "categories": [{"id": "4bf58dd8d48988d12a951735", "name": "Trains", "icône": "http://foursquare.com/img/categories/travel/trainstation.png","parents":["Travel Spots", "Train Stations"], "primary": true}], "verified": false, "stats": {"checkinsCount": 5, "usersCount": 5}, "hereNow": {"count": 0}}, {"id": "4ba3d477f964a520226438e3", "name": "Les Diamantaires "," contact ": {", "location": {"adresse": "60, Rue Lafayette", "ville": "Paris", "état": "Ile-de-France", "postalCode" : "75009", "lat": 48.873035, "lng": 2.333235, "distance": 26}, "categories": [{"id": "4bf58dd8d48988d115941735", "name": "Moyen Est Restaurants", "icon": "http://foursquare.com/img/categories/food/middleeastern.png", "parents": ["Food"], "primary": true}], "verified": false, "stats ": {" checkinsCount ": 11," usersCount ": 10}," hereNow ": {" count ": 0}}, {" id ":" 4cbeb94297bc721e31158167 "," nom ":" Dentiste "," contact ": {},"emplacement":{ "adresse": "36 bd haussmann", "ville": "Paris", "état": "Ile-de-France", "lat": 48.8729985, "lng": 2.3331688, "distance": 31} , "categories": [{"id": "4bf58dd8d48988d178941735", "name": "Dentiste's Bureaux", "icon": "http://foursquare.com/img/categories/building/medical_dentist.png", " parents ": [" Maisons, Travail, Autres "," Médical Centres "]," primaire ": vrai}]," vérifié ": faux," stats ": {" checkinsCount ": 9," usersCount ": 2 }, "hereNow": {"count": 0}}, {"id": "4c098514bbc676b0365c48d5", "name": "Meilleur Place à être Naked", "contact": {}, "location": { "lat": 48.872859, "lng": 2.333289, "distance": 43}, "catégories": [], "vérifié": faux, "stats": {"checkinsCount": 36, "usersCount": 21}, "hereNow": {"count": 0 }}, {"id": "4bbc55912d9ea5937878a0ce", "nom": "Pizza Tivoli", "contact": {}, "location": {"adresse": "5 rue La Fayette", "ville" : "Paris", "état": "France", "code postal": "75009", "lat": 48.8733461, "lng": 2.3340489, "distance": 50}, "categories": [{"id": "4bf58dd8d48988d110941735", "name": "Italien Restaurants", "icon": "http://foursquare.com/img/categories/food/default.png", "parents": ["Food"], "primaire" ": vrai}]," vérifié ": faux," stats ": {" checkinsCount ": 62," usersCount ": 47}," hereNow ": {" count ": 0}}, {" id ":" 4be11bf20f03a593908e18b4 "," name ":" Pôle Direction Nvx Médias "," contact ": {}," emplacement ": {" lat ": 48.872878," lng ": 2.333277," distance ": 42}," catégories ": [], "verified": false, "stats": {"checkinsCount": 25, "usersCount": 6} , "hereNow": {"count": 0}}, {"id": "4c17d044834e2d7f94f02780", "name": "Josefin", "contact": {}, "location": {"ville": "Paris" , "état": "Ile-de-France", "lat": 48.872863, "lng": 2.333273, "distance": 43}, "catégories": [{"id": "4bf58dd8d48988d10c941735", "nom": "Français Restaurants", "icon": "http://foursquare.com/img/categories/food/default.png", "parents": ["Food"], "primary": true}], "vérifié" ": false," stats ": {" checkinsCount ": 14," usersCount ": 8}," hereNow ": {" count ": 0}}, {" id ":" 4b597cfcf964a520e68928e3 "," name ":" Siège Danone "," contact ": {}," location ": {" adresse ":" 17 boulevard hausmann "," ville ":" Paris "," lat ": 48.873557," lng ": 2.334042," distance ": 59}," categories ": [{" id ":" 4bf58dd8d48988d124941735 "," name ":" Bureaux "," icon ":" http://foursquare.com/img/categories/building/default.png " , "parents": ["Maisons, Travail, Autres"], "primary": true}], "verified" ": false," stats ": {" checkinsCount ": 23," usersCount ": 13}," hereNow ": {" count ": 0}}, {" id ":" 4c1f5058fcf8c9b6f66bae0b "," nom ":" Obene "," contact ": {}," location ": {" adresse ":" 35 rue saint lazarre "," ville ":" Paris "," état ":" Francr "," postalCode ":" 75009 " , "lat": 48.872829, "lng": 2.333201, "distance": 48}, "categories": [{"id": "4bf58dd8d48988d1c0941735", "name": "Méditerranéen Restaurants", "icône": "http : //foursquare.com/img/categories/food/default.png "," parents ": [" Nourriture "]," primaire ": vrai}]," vérifié ": faux," stats ": {" checkinsCount " : 21, "usersCount": 5}, "hereNow": {"count": 0}}, {"id": "4d5133ac9ffc236a026720a7", "name": "Canapé Café Studio", "contact": {} , "location": {"lat": 48.873568, "lng": 2.33384, "distance": 48}, "categories": [{"id": "4bf58dd8d48988d10c941735", "name": "Français Restaurants", " icône ":" http://foursquare.com/img/categories/food/default. png "," parents ": [" Nourriture "]," primaire ": vrai}]," vérifié ": faux," stats ": {" checkinsCount ": 11," usersCount ": 10}," hereNow ": { "count": 0}}, {"id": "4cfa4adf2d80a1438a9f43d8", "nom": "manucure", "contact": {}, "location": {"adresse": "Rue de la chausse d antin "," ville ":" Paris "," état ":" Ile-de-France "," lat ": 48.87294352054596," lng ": 2.333693504333496," distance ": 41}," categories ": [{" id " : "4bf58dd8d48988d10c951735", "nom": "Cosmétiques Boutiques", "icon": "http://foursquare.com/img/categories/shops/beauty_cosmetic.png", "parents": ["Boutiques"], " primary ": true}]," verified ": false," stats ": {" checkinsCount ": 28," usersCount ": 4}," hereNow ": {" count ": 0}}, {" id ":" 4c7b90c9794e224bb48d6b28 "," nom ":" Le Galfa - La Fayette "," contact ": {}," emplacement ": {" lat ": 48.872853," lng ": 2.333072," distance ": 49}," catégories ": [{" id ":" 4bf58dd8d48988d10c941735 "," name ":" Français Re staurants "," icon ":" http://foursquare.com/img/categories/food/default.png "," parents ": [" Food "]," primary ": true}]," verified ": false , "stats": {"checkinsCount": 20, "usersCount": 15}, "hereNow": {"count": 0}}, {"id": "4c124b6377cea59338bccc60", "nom": "Midi", " contact ": {}," location ": {" adresse ":" Rue de la chaussée d antin "," ville ":" Paris "," état ":" Ile-de-France "," lat ": 48.8736428, "lng": 2.3330026, "distance": 51}, "catégories": [{"id": "4bf58dd8d48988d146941735", "nom": "Delis ou Bodegas", "icône": "http: // foursquare.com/img/categories/food/deli.png "," parents ": [" Nourriture "]," primaire ": vrai}]," vérifié ": faux," stats ": {" checkinsCount ": 15," usersCount ": 12}," hereNow ": { "count": 0}}, {"id": "4bb2f78ea32876b0173a01fe", "nom": "Glam Médias France (temp Bureaux)", "contact": {}, "location": {"address": " 21 bd Haussman "," ville ":" Paris "," lat ": 48.87305," lng ": 2.333831," distance ": 39}," catégories ": [{" id ":" 4bf58dd8d48988d125941735 "," nom ":" Tech Startups "," icon ":" http://foursquare.com/img/categories/building/default.png "," parents ": [" Maisons, Travail, Autres "," Bureaux " ], "primary": true}], "vérifié": false, "stats": {"checkinsCount": 7, "usersCount": 4}, "hereNow": {"count": 0}}, {"id ":" 4c122cd7583c9c74bf323fa4 "," nom ":" Havaianas accueille Summer @ Galeries Lafayette "," contact ": {" phone ":" 014282345 6 "," twitter ":" havaianaseurope "}," lieu ": {" adresse ":" 40 boulevard Haussmann "," ville ":" 75009 Paris "," état ":" France "," pays ": "France", "lat": 48.8731566, "lng": 2.3327878, "distance": 44}, "catégories": [{"id": "4bf58dd8d48988d107951735", "name": "Chaussure Magasins", "icon" : "http://foursquare.com/img/categories/shops/apparel.png", "parents": ["Magasins", "Vêtements Magasins"], "primaire": true}], "verified": true , "stats": {"checkinsCount": 11, "usersCount": 9}, "hereNow": {"count": 0}}, {"id": "4b9a40c4f964a52081a735e3", "nom": "petit georgette" , "contact": {}, "location": {"lat": 48.872544, "lng": 2.33322, "distance": 79}, "categories": [{"id": "4bf58dd8d48988d10c941735", "nom": "Français Restaurants", "icon": "http://foursquare.com/img/categories/food/default.png", "parents": ["Food"], "primary": true}], "vérifié" ": false," stats ": {" checkinsCount ": 60," utilisateurs Count ": 41", "hereNow": {"count": 0}}, {"id": "4c319736213c2d7f5e33345d", "nom": "Isiom", "contact": {}, "emplacement": {"lat ": 48.872815," lng ": 2.333228," distance ": 49}," categories ": [{" id ":" 4bf58dd8d48988d124941735 "," name ":" Bureaux "," icon ":" http: // foursquare. com/img/categories/building/default.png "," parents ": [" Maisons, Travail, Autres "]," primaire ": vrai}]," vérifié ": faux," stats ": {" checkinsCount ": 7," usersCount ": 2}," hereNow ": {" count ": 0}}, {" id ":" 4c89f5e49ef0224b0595567b "," name ":" Cardiweb "," contact ": {}," emplacement " ": {" ville ":" Paris "," état ":" Ile-de-France "," lat ": 48.873727," lng ": 2.33362," distance ": 55}," categories ": [{" id ":" 4bf58dd8d48988d124941735 "," name ":" Bureaux "," icon ":" http://foursquare.com/img/categories/building/default.png "," parents ": [" Maisons, Travail, Autres "]," primary ": true}]," verified ": false," stats ": {" checkinsCount ": 5," usersCount ": 3}," hereNow ": {" count ": 0}}, { "id": "4c507cf7991c20a18e0147 86 "," name ":" Focus Groupes "," contact ": {}," location ": {" lat ": 48.872982," lng ": 2.33353," distance ": 31}," categories ": [{ "id": "4bf58dd8d48988d124941735", "name": "Bureaux", "icon": "http://foursquare.com/img/categories/building/default.png", "parents": ["Maisons, , Autres "]," primary ": true}]," verified ": false," stats ": {" checkinsCount ": 1," usersCount ": 1}," hereNow ": {" count ": 0}} ]}]}}

Répondre

5

Cela ressemble à JSON, pas CSV. Utilisez ce cadre JSON pour analyser le fichier: http://code.google.com/p/json-framework/

+0

Je suis un idiot .... cela ressemble beaucoup – Bejil

+1

BTW, [ici] (http://chris.photobooks.com/json/default.htm) est un très bon outil de visualisation JSON en ligne. Vous collez dans votre texte JSON et cliquez sur "Render", et il vous montre le tout décomposé en ce qui contient quoi, ce qui rend beaucoup plus facile à comprendre et à naviguer. –

+0

Super, très utile! – Bejil