【发布时间】:2022-11-10 13:31:22
【问题描述】:
我有一个分隔字符串:“Albert:GE-20&40#Gert:LE-26#John-$-$#Johnah Doe:LP-40”。
名称:代码-Mark1&Mark2&Mark3#
其中,Albert 是名称,GE 是代码,20&40 是用 & 分隔的标记。不同的条目用# 分隔。如果任何数据不存在,则 $ 会出现在它的位置。前任。对于 John,代码和标记不存在,因此它们被替换为 $。
下面是我要模拟的对象结构:
{
"students":[{
"name": value,
"code":value,
"marks":[{"mark":value}]}]
}
所以上面的例子应该转化为:
{
"students":[{
"name": "Albert",
"code":"GE",
"marks":[{"mark":"20"},{"mark":"40"}]},
{
"name": "Gert",
"code":"LE",
"marks":[{"mark":"26"}]},
{
"name": "John"
},
{
"name": "Johnah Doe",
"code":"LP",
"marks":[{"mark":"40"}]}
]
}
我试图使用 ConvertString.java 来执行此操作,但被卡住了。我该怎么做呢?理想情况下使用 Java 8 流/正则表达式/库/任何其他有效方式。请帮忙。
StudentDetails.java
package com;
import java.util.List;
public class StudentDetails {
List<Student> students;
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
}
学生.java
package com;
import java.util.List;
public class Student {
String name;
String code;
List<Marks> marks;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public List<Marks> getMarks() {
return marks;
}
public void setMarks(List<Marks> marks) {
this.marks = marks;
}
}
标记.java
package com;
public class Marks {
String mark;
public String getMark() {
return mark;
}
public void setMark(String mark) {
this.mark = mark;
}
}
转换字符串.java
package com;
import java.util.ArrayList;
import java.util.List;
public class ConvertString {
public static void main(String args[])
{
String input="Amar:GE-20&40#Gert:LE-26#John-$-$#Johnah Doe:LP-40";
String newInput="#"+input+"#";
List<String> list1 = new ArrayList()<String>(Arrays.asList(newInput.split("#")));
}
}
【问题讨论】:
标签: java regex spring spring-boot java-8