2011-04-04 3 views
0

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

Как я могу получить собственный NSArray или NSDictionary из этого типа csv? Или вы знаете отличный (отличный!) Csv reader/parser?

Спасибо!

Вот пример:

{ "мета": { "код": 200}, "ответ": { "группа": [{ "тип": "ряд", "имя" : "√Ä proximit√ ©", "items": [{"id": "4bc88ad72f94d13aa9c5137f", "name": "M√ © tro Chauss√ © e d'Antin - La Fayette [7,9] "," контакт ": {}," location ": {" address ":" M√ © tro Chauss√ © e d'Antin - La Fayette "," city ":" Paris "," state ":" √éle de France "," postalCode ":" 75009 "," lat ": 48.872908," lng ": 2.33325," distance ": 39}," categories ": [{" id ":" 4bf58dd8d48988d1fd931735 "," имя «:» Метрополитены «„значок“:» ХТ tp: //foursquare.com/img/categories/travel/subway.png "," родители ": [" Путешествие Пятна "]," primary ": true}]," verified ": false," stats ": { "checkinsCount": 885, "usersCount": 368}, "здесь и сейчас": { "считать": 0}}, { "идентификатор": "4ba8e508f964a520e4f739e3", "название": "AdenClassifieds", "контакт": {}, «местоположение»: {«адрес»: «1-3 rue La Fayette», «город»: «Париж», «государство»: «Франция», «почтовый код»: «75009», «лат»: 48.8733461, "LNG": 2.3340489, "расстояние": 50}, "категории": [{ "ID": "4bf58dd8d48988d124941735", "имя": "Офисы", "значок": "http://foursquare.com/img/ Категории/building/default.png "," родители ": [" Дома, Работа, Другие "]," primary ": true}]," verified ": false," stats ": {" checkinsCount ": 187, "usersCount": 29}, "здесь и сейчас": { "счетчик": 0}}, { "идентификатор": "4c10cd34b4aeef3bad5afc0f", "название": "AdenSourcing", "контакт": {}, "расположение": {» адрес ":" 1, rue La Fayette », "Город": "Париж", "государство": "Франция", "PostalCode": "75009", "ш": 48,873009, "LNG": 2,333263, "расстояние": 28}, "Категории": [ {"id": "4bf58dd8d48988d125941735", "name": "Tech Startups", "icon": "http://foursquare.com/img/categories/building/default.png", "родители": ["Дома , Работы, Другие "," Офисы "]," primary ": true}, {" id ":" 4bf58dd8d48988d174941735 "," name ":" Coworking Пробелы "," icon ":" http: // foursquare. com/img/categories/building/default.png "," родители ": [" Дома, Работы, Другие "," Офисы "]}]," проверено ": false," stats ": {" checkinsCount ": 60, "usersCount": 7}, "здесь и сейчас": { "считать": 0}}, { "идентификатор": "4b6d79c2f964a520f6762ce3", "название": "N√ © gatif +", "контакт": {},» место ": {" адрес ":" 106 rue lafayette "," city ":" Paris "," state ":" France "," postalCode ":" 75010 "," lat ": 48.873035," lng ": 2,333 235, «расстояние»: 26}, «категории»: [{"id": "4bf58dd8d48988d1ff941735", "name": "Разное Магазины", "icon": "http://foursquare.com/img/categories/ магазины/Default.png " "родители": [ "Магазины"], "первичный": истинный}], "проверены": ложь, "статистика": { "checkinsCount": 121, "usersCount": 51}," hereNow ": {" count ": 0}}, {" id ":" 4beeb21a2c082d7f96b53042 "," name ":" Sephora Haussmann "," contact ": {}," location ": {" address ":" 23 bd Hausmann "," city ":" Paris "," state ":" Ile-de-France "," lat ": 48.8728835," lng ": 2.3334661," distance ": 41}," categories ": [{ «id»: «4bf58dd8d48988d10c951735», «name»: «Косметика Магазины», «icon»: «http://foursquare.com/img/categories/shops/beauty_cosmetic.png», «родители»: ["Магазины" ], "первичный": истинно}], "проверено" ложь, "статистика": { "checkinsCount": 135, "usersCount": 75}, "здесь и сейчас": { "счетчик": 0}}, { "идентификатор ":" 4af55e08f964a520f3f821e3 "," name ":" Chez Jean "," contact ": {}," location ": {" address ":" 4 rue La Fayette "," city ":" Paris "," state ":" France "," postalCode ":" 75009 "," lat " : 48.8731558, "LNG": 2.3334978, «расстояние»: 13}, «категории»: [{"id": "4bf58dd8d48988d118951735", "name": "Бакалея Магазины", "icon": "http://foursquare.com/img/categories/ магазины/food_grocery.png "," родители ": [" Магазины "," Еда и напитки Магазины "]," primary ": true}]," verified ": false," stats ": {" checkinsCount ": 46, «usersCount»: 27}, «hereNow»: {«count»: 0}}, {"id": "4bee9a52e8c3c928dfd89892", "name": "H & M", "contact": {}, "location": { "ш": 48.872951, "LNG": 2.333551, "расстояние": 35}, "категории": [{ "ID": "4bf58dd8d48988d104951735", "имя": "Бутики", "значок": "HTTP://foursquare.com/img/categories/shops/apparel.png","parents":["Shops","Одежда Магазины "]," primary ": true}]," verified ": false," stats ": { "checkinsCount": 84, "usersCount": 66}, "здесь и сейчас": { "считать": 0}}, { "ID": "4b51d04df964a520865627e3", "название": "Surcouf", "контакт": {} , "местонахождение": {"адрес": "21, bd Haussmann", "город": " Париж " "государство": "Франция", "PostalCode": "75009", "ш": 48,8728008, "LNG": 2,3339615, "расстояние": 65}, "Категории": [{ "ID":" 4bf58dd8d48988d122951735 "," name ":" High Tech Outlets "," icon ":" http://foursquare.com/img/categories/shops/technology.png "," parents ": [" Shops "]," primary ": истинно}]," проверено "ложь," статистика ": {" checkinsCount ": 332," usersCount ": 194}," здесь и сейчас ": {" подсчета ": 0}}, {" идентификатор ":" 4b1e6795f964a5209a1924e3 »,« имя »:« Le Manoir »,« contact »: {}," location ": {" address ":" 34 Boulevard Haussmann "," city ":" Paris "," state ":" France " "PostalCode": "75009", "ш": 48,872964707066394, "LNG": 2,334015369415283, "расстояние": 56}, "категории": [{ "ID": "4bf58dd8d48988d16d941735", "название":" Caf√ © s», "значок": "http://foursquare.com/img/categories/food/cafe.png", "родители": [ "Food"], "первичный": истинно}], "проверено": ложные, "статистика": { "checkinsCount": 116, "usersCount": 61}, "здесь и сейчас": { "счетчик": 0}}, { "идентификатор" : «4cb59ee81b0af04dca42ca25», «name»: «Casa Del Campo», «contact»: {}, "location": {"address": "Rue Lafayette", "city": "Paris", "state" : «Ил-де-Франс», «лат»: 48.873035, «lng»: 2.333235, «расстояние»: 26}, «категории»: [{"id": "4bf58dd8d48988d1db931735", "name": "Tapas Рестораны », "значок": "http://foursquare.com/img/categories/food/default.png", "родители": [ "Food"], "первичный": истинно}], "проверено": ложь, "stats": {"checkinsCount": 12, "usersCount": 11}, "hereNow": {"count": 0}}, {"id": "4cdd43c0d5495481874446b2", "name": "Thalys Paris> Bruxelles "," contact ": {}," location ": {" address ":" 111 rue Lafayette "," city ":" Paris "," state ":" Ile-de-France "," postalCode " : "75011", "ш": 48,873035, "LNG": 2,333235, "расстояние": 26}, "Категория": [{ "ID": "4bf58dd8d48988d12a951735", "имя": "Поезд", "значок": "http://foursquare.com/img/categories/travel/trainstation.png","parents":["Travel Пятна", "Поезд Станции"], "primary": true}], "verified": false, "stats": {"checkinsCount": 5, "usersCount": 5}, "hereNow": {"count": 0}}, {"id": "4ba3d477f964a520226438e3", "name": "Les Diamantaires »,« контакт »: {}," location ": {" address ":" 60, Rue Lafayette "," city ":" Paris "," state ":" Ile-de-France "," postalCode " : «75009», «лат»: 48.873035, «lng»: 2.333235, «расстояние»: 26}, «категории»: [{"id": "4bf58dd8d48988d115941735", "name": "Middle Eastern Рестораны", " "значок": "http://foursquare.com/img/categories/food/middleeastern.png", "родители": [ "Продукты питания"], "первичный": истинно}], "проверено": ложь, "статистика ": {" checkinsCount ": 11," usersCount ": 10}," здесь и сейчас ": {" считать ": 0}}, {" ID ":" 4cbeb94297bc721e31158167" , "название": "Dentiste", "контакт": {},"место нахождения":{ «адрес»: «36 bd haussmann», «город»: «Париж», «государство»: «Иль-де-Франс», «лат»: 48.8729985, «lng»: 2.3331688, «расстояние»: 31} , «категории»: [{«id»: «4bf58dd8d48988d178941735», «name»: «Dentist's Офисы», «Значок»: «http://foursquare.com/img/categories/building/medical_dentist.png», родители ": [" Дома, Работа, другие "," Медицинские Центры "]," primary ": true}]," verified ": false," stats ": {" checkinsCount ": 9," usersCount ": 2 }, "hereNow": {"count": 0}}, {"id": "4c098514bbc676b0365c48d5", "name": "Best Место должно быть Обнаженное", "контакт": {}, "location": { "латы": 48.872859, "LNG": 2.333289, "расстояние": 43}, "категории": [], "проверено" ложь, "Статистика": { "checkinsCount": 36, "usersCount": 21}, "здесь и сейчас": { "счетчик": 0 }}, {"id": "4bbc55912d9ea5937878a0ce", "name": "Pizza Tivoli", "contact": {}, "location": {"address": "5 rue La Fayette", "city" : "Париж", "государство": "Франция", "PostalCode": "75009", "ш": 48,8733461, "LNG": 2,3340489, "расстояние": 50}, "категории": [{ "ID": «4bf58dd8d48988d110941735», «name»: «Italian « Рестораны »,« icon »:« http://foursquare.com/img/categories/food/default.png »,« родители »: [« Еда »],« первичный ": истинно}]," проверено "ложь," статистика ": {" checkinsCount ": 62," usersCount ": 47}," здесь и сейчас ": {" счетчик ": 0}}, {" идентификатор ":" 4be11bf20f03a593908e18b4 "," name ":" Pole Направление Nvx Medias "," contact ": {}," location ": {" lat ": 48.872878," lng ": 2.333277," distance ": 42}," categories ": [], "проверено" ложь, "статистика": { "checkinsCount": 25, "usersCount": 6} , "Здесь и сейчас": { "кол": 0}}, { "ID": "4c17d044834e2d7f94f02780", "имя": "Josefin", "контакт": {}, "расположение": { "город": "Париж" , "состояние": "Иль-де-Франс", "ш": 48.872863, "LNG": 2.333273, "расстояние": 43}, "категории": [{ "ID": "4bf58dd8d48988d10c941735", "имя": «French « Рестораны »,« icon »:« http://foursquare.com/img/categories/food/default.png »,« родители »: [« Продовольствие »],« primary »: true}],« проверено ": ложные," статистика ": {" checkinsCount ": 14," usersCount ": 8}," здесь и сейчас ": {" счетчик ": 0}}, {" идентификатор ":" 4b597cfcf964a520e68928e3" , "название": "Блокада Danone "," contact ": {}," location ": {" address ":" 17 boulevard hausmann "," city ":" Paris "," lat ": 48.873557," lng ": 2.334042," distance ": 59}," категории ": [{" ID ":" 4bf58dd8d48988d124941735" , "имя": "Офисы", "значок": "http://foursquare.com/img/categories/building/default.png" , "родители": ["Дома, Работы, Другие"], "primary": true}], "verified "Ложь," Статистика ": {" checkinsCount ": 23," usersCount ": 13}," здесь и сейчас ": {" Count ": 0}}, {" ID ":" 4c1f5058fcf8c9b6f66bae0b " "название":" Obene «контакт»: {}, «местоположение»: {«адрес»: «35 rue saint lazarre», «city»: «Paris», «state»: «Francr», «postalCode»: «75009», , "lat": 48.872829, "lng": 2.333201, "distance": 48}, "categories": [{"id": "4bf58dd8d48988d1c0941735", "name": "Mediterranean Restaurants", "icon": "http : //foursquare.com/img/categories/food/default.png», "родители": [ "Food"], "первичный": истинно}], "проверено": ложные, "Статистика": { "checkinsCount" : 21, «usersCount»: 5}, «hereNow»: {«count»: 0}}, {"id": "4d5133ac9ffc236a026720a7", "name": "Sofa Кафе Студия", "контакт": {} , "location": {"lat": 48.873568, "lng": 2.33384, "distance": 48}, "categories": [{"id": "4bf58dd8d48988d10c941735", "name": "French Restaurants", " значок ":" http://foursquare.com/img/categories/food/default. PNG», "родители": [ "Food"], "первичный": истинно}], "проверено": ложь, "Статистика": { "checkinsCount": 11, "usersCount": 10}, "здесь и сейчас": { «count»: 0}}, {«id»: «4cfa4adf2d80a1438a9f43d8», «name»: «Manucurist», «contact»: {}, "location": {"address": "Rue de la chausse d antin », "город": "Париж", "государство": "Иль-де-Франс", "ш": 48,87294352054596, "LNG": +2,333693504333496, "расстояние": 41}, "категории": [{ "ID" : «4bf58dd8d48988d10c951735», «name»: «Косметика Магазины», «icon»: «http://foursquare.com/img/categories/shops/beauty_cosmetic.png», «родители»: ["Магазины"], первичная ": истинная}]," проверены ": ложная," статистика ": {" checkinsCount ": 28," usersCount ": 4}," здесь и сейчас ": {" счетчик ": 0}}, {" идентификатор ":" 4c7b90c9794e224bb48d6b28 "," name ":" Le Galfa - La Fayette "," contact ": {}," location ": {" lat ": 48.872853," lng ": 2.333072," distance ": 49}," categories ": [{" id ":" 4bf58dd8d48988d10c941735 "," name ":" French Re staurants», "значок": "http://foursquare.com/img/categories/food/default.png", "родители": [ "Food"], "первичный": истинно}], "проверено": ложные , "статистика": { "checkinsCount": 20, "usersCount": 15}, "здесь и сейчас": { "считать": 0}}, { "идентификатор": "4c124b6377cea59338bccc60", "название": "Полдень",» контакт ": {}," местоположение ": {" адрес ":" Rue de la chaussee d antin "," city ":" Paris "," state ":" Иль-де-Франс "," лат ": 48.8736428, «lng»: 2.3330026, «расстояние»: 51}, «категории»: [{"id": "4bf58dd8d48988d146941735", "name": "Delis или Bodegas", "icon": "http: // foursquare.com/img/categories/food/deli.PNG», "родители": [ "Food"], "первичный": истинно}], "проверено": ложь, "Статистика": { "checkinsCount": 15, "usersCount": 12}, "здесь и сейчас": { «count»: 0}}, {«id»: «4bb2f78ea32876b0173a01fe», «name»: «Glam Media France (temp Офисы)», «контакт»: {}, "location": {"address": " 21 bd Haussman "," city ":" Paris "," lat ": 48.87305," lng ": 2.333831," distance ": 39}," categories ": [{" id ":" 4bf58dd8d48988d125941735 "," name ":" Tech Startups "," icon ":" http://foursquare.com/img/categories/building/default.png "," родители ": [" Дома, Работа, Другие "," Офисы " ], "первичный": истинно}], "проверено" ложь, "статистика": { "checkinsCount": 7, "usersCount": 4}, "здесь и сейчас": { "счетчик": 0}}, { "идентификатор ":" 4c122cd7583c9c74bf323fa4 "," name ":" Havaianas приветствует Summer @ Galeries Lafayette "," contact ": {" phone ":" 014282345 6 »,« twitter »:« havaianaseurope »},« местоположение »: {« адрес »:« 40 бульвар Хаусманн »,« город »:« 75009 Париж »,« государство »:« Франция »,« страна »: «Франция», «лат»: 48.8731566, «lng»: 2.3327878, «расстояние»: 44}, «категории»: [{"id": "4bf58dd8d48988d107951735", "name": "Обувь Магазины", " : «http://foursquare.com/img/categories/shops/apparel.png», «родители»: [«Магазины», «Одежда Магазины»], «primary»: true}], «verified»: true , "stats": {"checkinsCount": 11, "usersCount": 9}, "hereNow": {"count": 0}}, {"id": "4b9a40c4f964a52081a735e3", "name": "little georgette" , "контакт": {}, "расположение": { "лат": 48.872544, "LNG": 2,33322, "расстояние": 79}, "категории": [{ "ID": "4bf58dd8d48988d10c941735", "имя": «French « Рестораны »,« icon »:« http://foursquare.com/img/categories/food/default.png »,« родители »: [« Продовольствие »],« primary »: true}],« проверено ": ложные," статистика ": {" checkinsCount ": 60," пользователи Граф ": 41}," здесь и сейчас ": {" считать ": 0}}, {" идентификатор ":" 4c319736213c2d7f5e33345d " "название": "Isiom", "контакт": {}, "расположение": {" лат ": 48.872815," LNG ": 2.333228," расстояние ": 49}," Категория ": [{" ID ":" 4bf58dd8d48988d124941735" , "имя": "Офисы", "значок": "HTTP: // квадратное. com/img/categories/building/default.png "," parents ": [" Homes, Work, Другие "]," primary ": true}]," verified ": false," stats ": {" checkinsCount ": 7," usersCount ": 2}," здесь и сейчас ": {" считать ": 0}}, {" ID ":" 4c89f5e49ef0224b0595567b " "название": "Cardiweb", "контакт": {}," расположение ": {" город ":" Париж " "государство": "Иль-де-Франс", "ш": 48.873727, "LNG": 2,33362, "расстояние": 55}, "категории": [{" ID «:« 4bf58dd8d48988d124941735 »,« name »:« Офисы »,« Значок »:« http://foursquare.com/img/categories/building/default.png »,« родители »: [" Дома, Работа, Другие "]," первичный ": истинно}]," проверено "ложь," статистика ": {" checkinsCount ": 5," usersCount ": 3}," здесь и сейчас ": {" счетчик ": 0}}, { "идентификатор": "4c507cf7991c20a18e0147 86 "," name ":" Фокус Группы "," контакт ": {}," location ": {" lat ": 48.872982," lng ": 2.33353," distance ": 31}," categories ": [{ «id»: «4bf58dd8d48988d124941735», «name»: «Офисы», «Значок»: «http://foursquare.com/img/categories/building/default.png», «родители»: ["Дома, Работа , Другие "]," primary ": true}]," verified ": false," stats ": {" checkinsCount ": 1," usersCount ": 1}," hereNow ": {" count ": 0}} ]}]}}

ответ

5

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

+0

Я такой идиот .... thakns много – Bejil

+1

BTW, [здесь] (http://chris.photobooks.com/json/default.htm) является действительно хороший онлайн-инструмент визуализации JSON. Вы вставляете текст JSON и нажимаете «Render», и он показывает вам всю вещь, разбитую на то, что содержит то, что делает ее намного легче понять и ориентироваться. –

+0

Отлично, очень полезно! – Bejil

Смежные вопросы