Если источник данных один и не изменяется, вы можете использовать этот онлайн-конвертер CSV в JSON , который имеет удобную функцию "Parse JSON", которая преобразует значения JSON в cast
и crew
столбца во вложенные объекты JSON.
Затем вы будете использовать JSON.simple , Gson или Jackson для анализа чистых данных JSON.
Например,
movie_id,title,cast,crew
19995,Avatar,"[{""cast_id"": 242, ""character"": ""Jake Sully"", ""credit_id"": ""5602a8a7c3a3685532001c9a"", ""gender"": 2, ""id"": 65731, ""name"": ""Sam Worthington"", ""order"": 0}]",null
становится:
[
{
"movie_id": 19995,
"title": "Avatar",
"cast": [
{
"cast_id": 242,
"character": "Jake Sully",
"credit_id": "5602a8a7c3a3685532001c9a",
"gender": 2,
"id": 65731,
"name": "Sam Worthington",
"order": 0
}
],
"crew": null
}
]
Если это невозможно, то вы можете указать библиотеке синтаксического анализа CSV игнорировать разделитель, например, когда он находится внутри кавычек.
При использовании Opencsv посмотрите на класс CSVParserBuilder
. У него есть метод #withIgnoreQuotations(boolean)
, который может выполнять эту работу.
Нижеследующее взято из описания CSVReaderBuilder
класса.
CSVParser parser = new CSVParserBuilder()
.withSeparator(',')
.withQuoteChar('"')
.withIgnoreQuotations(true)
.build();
CSVReader reader = new CSVReaderBuilder(new FileReader("tmdb_5000_credits.csv"))
.withSkipLines(1)
.withCSVParser(parser)
.build();
Лично мне нравится библиотека Джексона. Он поддерживает JSON "из коробки" и может быть расширен для поддержки многих других форматов, таких как YAML и CSV .