我有一个CSV文件,大约有30列,其中一列是json字符串。我想要做的是读取csv并将json分解为行(拆分)。
例如: CSV:
"data1,date1,{"USERS-1":"ff", "name1":"Joe1", "age":"1"},1"
"data2,date2,{"USERS-2":"ff", "name2":"Joe2", "age":"2"},2"
"data3,date3,{"USERS-3":"ff", "name3":"Joe3", "age":"3"},3" 之后的结果:
"data1,date1,"USERS-1","ff",1"
"data1,date1,"name1","Joe1",1"
"data1,date1,"age","1",1"
"data2,date2,"USERS-2","ff",2"
"data2,date2,"name2","Joe1",2"
"data2,date2,"age","2",2"
"data3,date3,"USERS-3","ff",3"
"data3,date3,"name3","Joe1",3"
"data3,date3,"age","3",3"我不是用scala写的。
Json是非结构化的!
发布于 2018-11-29 21:32:36
乔!我写了一个类,以便向你展示我将如何解决你的问题。在代码之后,我将为您提供额外的详细信息,以便您更好地理解代码的作用。
public class MMM {
public static void main(String[] args) {
String s = "data1,date1,{\"USERS-1\":\"ff\", \"name1\":\"Joe1\", \"age\":\"1\"},1";
processLine(s);
}
public static void processLine(String s) {
final String dates = s.split("[{]")[0];
final String content = s.split("[{]")[1];
final List<String> elements = Arrays.stream(content.split("[,}]")).map(String::trim).filter(x -> !x.isEmpty())
.collect(Collectors.toList());
String result = dates;
for (int i = 0; i < elements.size() - 1; i++) {
result += elements.get(i);
result += elements.get(elements.size() - 1);
System.out.println(result);
result = dates;
}
}
}基本上,代码所做的是将从CSV读取的一行分为两部分,日期和在括号中找到的内容。内容再次拆分,修剪以删除字符串末尾的“”,并过滤掉空字符串。我们现在有了一个关于我们的元素的列表。为了更好地了解该方法的作用,我决定打印结果。您可以很容易地修改代码,以便以列表或任何您喜欢的形式返回它们。我希望我的回答是有帮助的,祝你有愉快的一天!
https://stackoverflow.com/questions/53525519
复制相似问题