Как сделать ассоциативный массив из файла CSV, используя ColdFusion? - PullRequest
0 голосов
/ 24 февраля 2020

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

Пожалуйста, дайте мне знать, что вам нужно дальше. Помощь будет оценена.

Ответы [ 3 ]

4 голосов
/ 24 февраля 2020

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

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

4 голосов
/ 24 февраля 2020

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

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

1 голос
/ 25 февраля 2020

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

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

https://trycf.com/gist/b8f30141e8e6b588a396fb1051a38447/acf11?theme=monokai

<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>

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

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

...