iPhone: сложный парсер CSV - PullRequest
       10

iPhone: сложный парсер CSV

0 голосов
/ 04 апреля 2011

Я хотел бы проанализировать сложный файл CSV.Я искал источники в Интернете, но я нашел только читателей для простого CSV с комой и кавычками.Но мой также содержит "{", "[" и ":" для создания групп, подгрупп ...

Как я могу получить правильный NSArray или NSDictionary из этого вида CSV?Или вы знаете, отличный (отличный!) CSV-ридер / парсер?

Спасибо!

Вот пример:

{"meta": {"код ": 200}," ответ ": {" groups ": [{" type ":" рядом "," имя ":" √Ä proximit√ © "," items ": [{" id ":" 4bc88ad72f94d13aa9c5137f ", "name": "M√ro Chauss√ © e d'Antin - La Fayette [7,9]", "contact": {}, "location": {"address": "M√ro Chauss√© e d'Antin - La Fayette "," city ":" Paris "," state ":" √éle de France "," postalCode ":" 75009 "," lat ": 48.872908," lng ": 2.33325,"расстояние ": 39}," категории ": [{" id ":" 4bf58dd8d48988d1fd931735 "," name ":" Subways "," icon ":" http://foursquare.com/img/categories/travel/subway.png","parents":["Travel Spots "]," primary ": true}]," подтверждено"ложь," статистика ": {" checkinsCount ": 885," usersCount ": 368}," здесь и сейчас ": {" Count ": 0}}, {" ID ":" 4ba8e508f964a520e4f739e3" , "название": "AdenClassifieds"," contact ": {}," location ": {" address ":" 1-3 rue La Fayette "," city ":" Paris "," state ":" France "," postalCode ":" 75009 ", "ш": 48.8733461 "LNG": 2.3340489, "расстояние": 50}, "категории": [{ "ID": "4bf58dd8d48988d124941735", "имя": "Офисы", "значок": "http://foursquare.com/img/categories/building/default.png","parents":["Homes,Работа, OTHERS "]," первичный ": истинно}]," проверено "ложь," Статистика ": {" checkinsCount ": 187," usersCount ": 29}," здесь и сейчас ": {" счетчик ": 0}}, {"id": "4c10cd34b4aeef3bad5afc0f", "name": "AdenSourcing", "contact": {}, "location": {"address": "1, rue La Fayette", "city": "Paris", "state":" Франция», "PostalCode": "75009", "ш": 48,873009, "LNG": 2,333263, "расстояние": 28}, "категории": [{ "ID": "4bf58dd8d48988d125941735", "имя": "Технические стартапы", "icon": "http://foursquare.com/img/categories/building/default.png","parents":["Homes, Работа, Другие", "Офисы"], "primary": true}, {"id": "4bf58dd8d48988d174941735", "name": "Коворкинг", "значок ":" http://foursquare.com/img/categories/building/default.png","parents":["Homes, Работа, Другое "," Офисы "]}]," подтверждено ": false," статистика ": {" checkinsCount ": 60," usersCount ": 7}," hereNow ": {" count": 0}}, {" id ":" 4b6d79c2f964a520f6762ce3 "," name ":" N√ © gatif + "," contact ": {}," location ": {" address ":" 106 rue lafayette "," city":" Париж», "государство": "Франция", "PostalCode": "75010", "ш": 48,873035, "LNG": 2,333235, "расстояние": 26}, "категории": [{ "ID": "4bf58dd8d48988d1ff941735", "name": "Разные магазины", "icon": "http://foursquare.com/img/categories/shops/default.png","parents":["Shops"],"primary":true}],"verified":false,"stats":{"checkinsCount":121,"usersCount":51},"hereNow":{"count":0}},{"id":"4beeb21a2c082d7f96b53042","name":"Sephora Haussmann", "contact": {}, "location": {"address": "23 bd Hausmann", "city":»Париж " "государство": "Иль-де-Франс", "ш": 48.8728835, "LNG": 2.3334661, "расстояние": 41}, "Категории": [{ "ID": "4bf58dd8d48988d10c951735"," имя":" Магазины косметики "," icon ":" http://foursquare.com/img/categories/shops/beauty_cosmetic.png","parents":["Shops"],"primary":true}],"verified":false,"stats":{"checkinsCount":135,"usersCount":75},"hereNow":{"count":0}},{"id":"4af55e08f964a520f3f821e3","name":"Chez Жан "," contact ": {}," location ": {" address ":" 4 rue La Fayette "," city ":" Paris ","государство ":" Франция " "PostalCode": "75009", "ш": 48,8731558, "LNG": 2,3334978, "расстояние": 13}, "категории": [{ "ID": "4bf58dd8d48988d118951735"," имя":" Продуктовые магазины "," icon ":" http://foursquare.com/img/categories/shops/food_grocery.png","parents":["Shops","Food и магазины напитков "]," primary ": true}]," Verified ": false," stats ": {" checkinsCount ": 46," usersCount ":27}, "здесь и сейчас": { "считать": 0}}, { "ID": "4bee9a52e8c3c928dfd89892", "название": "контакт" "H & M",: {}, "расположение": { "лат": 48.872951, "lng": 2.333551, "distance": 35}, "Categories": [{"id": "4bf58dd8d48988d104951735", "name": "Boutiques", "icon": "http://foursquare.com/img/categories/shops/apparel.png","parents":["Shops","Clothing Stores"], "primary": истинно}]," проверено "ложь," статистика ": {" checkinsCount ": 84," usersCount ": 66}," здесь и сейчас ": {" счетчик ": 0}}, {" идентификатор ":" 4b51d04df964a520865627e3"," name ":" Surcouf "," contact ": {}," location ": {" address ":" 21, bd Haussmann "," city ":" Paris "," state ":" France ","PostalCode ":" 75009" ,»lat ": 48.8728008," lng ": 2.3339615," distance ": 65}," Categories ": [{" id ":" 4bf58dd8d48988d122951735 "," name ":" High Tech Outlets "," icon ":" http://foursquare.com/img/categories/shops/technology.png","parents":["Shops"],"primary":true}],"verified":false,"stats":{"checkinsCount":332,"usersCount":194},"hereNow":{"count":0}},{"id":"4b1e6795f964a5209a1924e3","name":"LeManoir "," contact ": {}," location ": {" address ":" Boulevard Haussmann 34 "," city ":" Paris "," state ":" France "," postalCode ":" 75009 "," "LAT ": 48,872964707066394," LNG ": +2,334015369415283," расстояние ": 56}," категории ": [{" ID ":" 4bf58dd8d48988d16d941735" , "имя": "Caf√ © s", "значок": "http://foursquare.com/img/categories/food/cafe.png","parents":["Food"],"primary":true}],"verified":false,"stats":{"checkinsCount":116,"usersCount":61},"hereNow":{"count":0}},{"id":"4cb59ee81b0af04dca42ca25","name":"Casa Del Campo "," contact ": {}," location ": {" address ":" Rue Lafayette "," city ":" Paris ", "Состояние": "Иль-де-Франс", "ш": 48.873035, "LNG": 2.333235, "расстояние": 26}, "Категории": [{ "ID": "4bf58dd8d48988d1db931735", "имя": «Тапас Рестораны " "значок":" http://foursquare.com/img/categories/food/default.png","parents":["Food"],"primary":true}],"verified":false,"stats":{"checkinsCount":12,"usersCount":11},"hereNow":{"count":0}},{"id":"4cdd43c0d5495481874446b2","name":"Thalys Париж> Брюссель " "Контакт": {}, "расположение": { "адрес":" 111 рута Lafayette», "город": "Париж", "государство": "Иль-де-Франс", "PostalCode": "75011", "ш": 48,873035, "LNG": 2,333235, "расстояние": 26}, "Категория": [{ "ID": "4bf58dd8d48988d12a951735", "имя": "Поезд", "значок": "http://foursquare.com/img/categories/travel/trainstation.png","parents":["Travel Пятна «» Поезд Станции "]," первичный ": истинно}]," проверено "ложь," Статистика ": {" checkinsCount ": 5," usersCount ": 5}," здесь и сейчас ": {" счетчик ": 0}}, { "идентификатор": "4ba3d477f964a520226438e3", "имя": "Les Диамантеры " "контакт": {}, "расположение": { "адрес":" 60, рута Lafayette», "город": "Париж", "государство": "Иль-де-Франс", "PostalCode": "75009", "ш": 48,873035, "LNG": 2,333235, "расстояние": 26}, "Категория": [{ "ID": "4bf58dd8d48988d115941735", "имя": "Ближний восточный Рестораны " "значок":" http://foursquare.com/img/categories/food/middleeastern.png","parents":["Food"],"primary":true}],"verified":false,"stats":{"checkinsCount":11,"usersCount":10},"hereNow":{"count":0}},{"id":"4cbeb94297bc721e31158167","name":"Dentiste","contact":{},"location":{"address":"36 бод Осман " "город": "Париж", "государство": "Иль-де-Франс", "ш": 48.8729985, "LNG": 2.3331688, "расстояние": 31}, "Категории": [{" ID ":" 4bf58dd8d48988d178941735" , "имя": "дантиста Офисы " "значок":" http://foursquare.com/img/categories/building/medical_dentist.png","parents":["Homes, Работа, Прочее "," Медицинский Центры "]," первичный ": истинно}]," проверено "ложь," Статистика ": {" checkinsCount ": 9," usersCount ": 2}," здесь и сейчас ": {" счетчик ": 0}}, { "идентификатор": "4c098514bbc676b0365c48d5", "имя": "Лучший Место, чтобы быть Голая», "Контакт": {}, "место": { "ш": 48.872859, "LNG": 2.333289, "расстояние": 43}, "Категория": [], "проверена" ложь "статистика" : { "checkinsCount": 36, "usersCount": 21}, "здесь и сейчас": { "счетчик": 0}}, { "идентификатор": "4bbc55912d9ea5937878a0ce", "название": "Пицца Тиволи " "контакт": {}, "расположение": { "адрес":" 5 Рю Ла Лафайет», "город": "Париж", "государство": "Франция", "PostalCode": "75009", "ш": 48,8733461, "LNG": 2,3340489, "расстояние": 50}, "Категории": [{ "ID": "4bf58dd8d48988d110941735", "имя": "Итальянский Рестораны " "значок":" http://foursquare.com/img/categories/food/default.png","parents":["Food"],"primary":true}],"verified":false,"stats":{"checkinsCount":62,"usersCount":47},"hereNow":{"count":0}},{"id":"4be11bf20f03a593908e18b4","name":"Pole Направление Nvx Медиас», "Контакт": {}, "расположение": { "латы": 48.872878, "LNG": 2.333277, "расстояние": 42}, "категория": [], "проверена" ложь "статистика" : { "checkinsCount": 25, "usersCount": 6}, "здесь и сейчас": { "считать": 0}}, { "идентификатор": "4c17d044834e2d7f94f02780", "название": "Josefin", "контакт": { }, "место": { "город": "Париж", "государство": "Иль-де-Франс", "ш": 48.872863, "LNG": 2.333273, "расстояние": 43}, "категории": [{ "ID": "4bf58dd8d48988d10c941735", "имя": "Французский Рестораны " "значок":" http://foursquare.com/img/categories/food/default.png","parents":["Food"],"primary":true}],"verified":false,"stats":{"checkinsCount":14,"usersCount":8},"hereNow":{"count":0}},{"id":"4b597cfcf964a520e68928e3","name":"Siege Данон " "контакт": {}, "расположение": { "адрес":" 17 бульвар Hausmann " "город": "Париж", "ш": 48.873557, "LNG": 2.334042, "расстояние": 59}, "Категории": [{ "ID": "4bf58dd8d48988d124941735", "имя":" Офисы " "значок":" http://foursquare.com/img/categories/building/default.png","parents":["Homes, Работа, Другие "]," первичный ": истинно}]," проверено "ложь," Статистика ": {" checkinsCount ": 23," usersCount ": 13}," здесь и сейчас ": {" счетчик ": 0}}, { "идентификатор": "4c1f5058fcf8c9b6f66bae0b", "название": "Obene", "контакт": {}, "расположение": { "адрес": "35 Rue Saint lazarre», "город": "Париж", "государство": "Francr", "PostalCode": "75009", "ш": 48,872829, "LNG": 2,333201, "расстояние": 48}, "Категории": [{ "ID": "4bf58dd8d48988d1c0941735", "имя": "Средиземноморская Рестораны " "значок":" http://foursquare.com/img/categories/food/default.png","parents":["Food"],"primary":true}],"verified":false,"stats":{"checkinsCount":21,"usersCount":5},"hereNow":{"count":0}},{"id":"4d5133ac9ffc236a026720a7","name":"Sofa Кафе Студия " "контакт": {}, "место": { "ш": 48.873568, "LNG": 2,33384, "расстояние": 48}, "Категории": [{ "ID": "4bf58dd8d48988d10c941735"," имя ":"Французский Рестораны " "значок":" http://foursquare.com/img/categories/food/default.png","parents":["Food"],"primary":true}],"verified":false,"stats":{"checkinsCount":11,"usersCount":10},"hereNow":{"count":0}},{"id":"4cfa4adf2d80a1438a9f43d8","name":"Manucurist","contact":{},"location":{"address":"Rue де ла шосс Энтин " "город": "Париж", "государство": "Иль-де-Франс", "ш": 48,87294352054596, "LNG": +2,333693504333496, "расстояние": 41}, "Категории": [{" ID ":" 4bf58dd8d48988d10c951735" , "имя": "Косметика Магазины " "значок":" http://foursquare.com/img/categories/shops/beauty_cosmetic.png","parents":["Shops"],"primary":true}],"verified":false,"stats":{"checkinsCount":28,"usersCount":4},"hereNow":{"count":0}},{"id":"4c7b90c9794e224bb48d6b28","name":"Le Гальфа - Ла Лафайет " "контакт": {}, "место": { "ш": 48.872853, "LNG": 2.333072, "расстояние": 49}, "Категории": [{ "ID": "4bf58dd8d48988d10c941735"," имя ":"Французский Рестораны " "значок":" http://foursquare.com/img/categories/food/default.png","parents":["Food"],"primary":true}],"verified":false,"stats":{"checkinsCount":20,"usersCount":15},"hereNow":{"count":0}},{"id":"4c124b6377cea59338bccc60","name":"Noon","contact":{},"location":{"address":"Rue de la chaussee d Энтин " "город": "Париж", "государство": "Иль-де-Франс", "ш": 48.8736428, "LNG": 2.3330026, "расстояние": 51}, "Категории": [{" ID ":" 4bf58dd8d48988d146941735" , "имя": "Делис или же Bodegas " "значок":" http://foursquare.com/img/categories/food/deli.png","parents":["Food"],"primary":true}],"verified":false,"stats":{"checkinsCount":15,"usersCount":12},"hereNow":{"count":0}},{"id":"4bb2f78ea32876b0173a01fe","name":"Glam Медиа Франция (темп Офисы) " "контакт": {}, "расположение": { "адрес":" 21 бод Haussman " "город": "Париж", "ш": 48,87305, "LNG": 2,333831, "расстояние": 39}, "Категории": [{ "ID": "4bf58dd8d48988d125941735", "имя":" Технология Стартапы " "значок":" http://foursquare.com/img/categories/building/default.png","parents":["Homes, Работа,Другие», "Offices"], "первичный": истинно}], "проверено": ложь, "Статистика": { "checkinsCount": 7, "usersCount": 4}, "здесь и сейчас": { "кол": 0}}, {"id": "4c122cd7583c9c74bf323fa4", "name": "Havaianas приветствует Summer @ Galeries Lafayette", "contact": {"phone": "0142823456", "twitter": "havaianaseurope"}, "location": {"address": "40 boulevard Haussmann", "city": "75009 Paris", "state": "France", "country": "France", "lat": 48.8731566, "lng": 2.3327878, "distance ": 44}," Categories ": [{" id ":" 4bf58dd8d48988d107951735 "," name ":" Shoe Stores "," icon ":" http://foursquare.com/img/categories/shops/apparel.png","parents":["Shops","Clothing Stores "]," primary ": true}],"проверено ": правда," статистика ": {" checkinsCount ": 11," usersCount ": 9}," здесь и сейчас ": {" подсчета ": 0}}, {" идентификатор ":" 4b9a40c4f964a52081a735e3" , "название":»маленький жоржет "," contact ": {}," location ": {" lat ": 48.872544," lng ": 2.33322," distance ": 79}," category ": [{" id ":" 4bf58dd8d48988d10c941735 ","name ":" French Restaurants "," icon ":" http://foursquare.com/img/categories/food/default.png","parents":["Food"],"primary":true}],"verified":false,"stats":{"checkinsCount":60,"usersCount":41},"hereNow":{"count":0}},{"id":"4c319736213c2d7f5e33345d","name":"Isiom","contact":{},"location":{"lat":48.872815,"lng":2.333228,"distance":49},"categories":[{"id":"4bf58dd8d48988d124941735","name":"Offices","icon":"http://foursquare.com/img/categories/building/default.png","parents":["Homes, Work, Others "]," primary ": true}]," Verified ": false," stats ": {" checkinsCount ": 7," usersCount ": 2}, "здесь и сейчас": { "считать": 0}}, { "идентификатор": "4c89f5e49ef0224b0595567b", "название": "Cardiweb", "гронтакт ": {}," место ": {" город ":" Париж», "государство": "Иль-де-Франс", "ш": 48.873727, "LNG": 2,33362, "расстояние": 55},"category": [{"id": "4bf58dd8d48988d124941735", "name": "Office", "icon": "http://foursquare.com/img/categories/building/default.png","parents":["Homes, Work, Others"], "primary": true}], "Verified": false,"stats": {"checkinsCount": 5, "usersCount": 3}, "hereNow": {"count": 0}}, {"id": "4c507cf7991c20a18e014786", "name": "Focus Groups", "связаться с ": {}," расположение ": {" ш ": 48.872982," LNG ": 2,33353," расстояние ": 31}," категории ": [{" ID ":" 4bf58dd8d48988d124941735" , "имя": "Офисы"," icon ":" http://foursquare.com/img/categories/building/default.png","parents":["Homes, Work, Others "]," primary ": true}]," Verified ": false," stats ": {" checkinsCount ": 1," usersCount ": 1}," hereNow": {" count ": 0}}]}]}}

1 Ответ

5 голосов
/ 04 апреля 2011

Это похоже на JSON, а не CSV.Используйте этот JSON Framework для анализа файла: http://code.google.com/p/json-framework/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...