Как сделать ассоциативный массив из файла CSV с помощью ColdFusion?

Кто-нибудь может объяснить, как сделать ассоциативный массив из файла CSV в ColdFusion. Я реализовал это на PHP, но теперь мне нужно и в ColdFusion. У меня есть первая строка в качестве заголовка, и я хочу использовать их как ключи и все строки из CSV, кроме первой, как значение в массиве assoc.

Пожалуйста, дайте мне знать, что вам нужно дальше. Помощь приветствуется.


person U.Malik    schedule 24.02.2020    source источник
comment
Извините . Я имел в виду первый ряд. Спасибо   -  person U.Malik    schedule 24.02.2020
comment
Для полноты картины ассоциативный массив в ColdFusion называется структурой.   -  person Shawn    schedule 24.02.2020


Ответы (3)


Если вы прочитаете файл с тегом <cfhttp> и включите атрибут name, в вашем распоряжении будет объект запроса ColdFusion. Хотя это и не называется ассоциативным массивом, фактически он им является.

Образцы кода и более подробное объяснение доступны здесь. https://www.bennadel.com/blog/1903-parsing-csv-data-with-coldfusion-s-cfhttp-tag.htm

person Dan Bracuk    schedule 24.02.2020
comment
Позвольте мне попробовать это тогда - person U.Malik; 24.02.2020
comment
Это отличный способ настроить информацию так, как она вам нужна. Просто не забудьте отметить ограничения Бена. - person Shawn; 24.02.2020

Мы используем java-библиотеку под названием OpenCSV. Вот страница с примером.

https://dev.to/gamesover/convert-csv-file-to-coldfusion-query-object-using-coldfusion-opencsv-java-49ho

person Dan Roberts    schedule 24.02.2020

Как уже говорили другие, вы можете легко преобразовать файл CSV в объект запроса, используя cfhttp. Кроме того, поскольку вы используете ColdFusion 11, вы можете преобразовать объект запроса в json, используя serializeJson с параметром struct. Затем deserializeJson, чтобы преобразовать его обратно в массив структур. Все, что вам нужно, это 2 строки кода, и все готово.

См. пример кода и ссылку на суть TryCF ниже.

https://trycf.com/gist/b8f30141e8e6b588a396fb1051a38447/acfmonokai >

<cfscript>
    cfhttp( 
        name="myData", 
        url="https://raw.githubusercontent.com/sauravg94/test-repo/master/MOCK_DATA.csv", 
        firstrowasheaders="true",
        method="GET"
    );
    myArrayOfStructs = deserializeJson(serializeJson(myData, "struct"));

    writedump(myData);
    writeDump(myArrayOfStructs);

</cfscript>

РЕДАКТИРОВАТЬ

Код обновлен в связи с комментарием Дэна Бракука, в котором он указал, что я не ответил на заданный вопрос.

person user12031119    schedule 24.02.2020
comment
Небольшая проблема, в вопросе ничего не было сказано о json. - person Dan Bracuk; 25.02.2020
comment
@DanBracuk Глупо, я. Вы правы. Я обновлю свой ответ, чтобы отразить то, что было после ОП. Моя вина. - person user12031119; 25.02.2020