给定字符串如下:
area:0,price:4500,serviceFee:300;area:2452,price:4800,serviceFee:300
以map键值对的形式解析,可避免部分字段落解析问题:
方式一:
public static void main(String[] args) {
String str = "area:0,price:4500,serviceFee:300;area:2452,price:4800,serviceFee:300";
String[] split = str.split(";");
List<Schedule> list = new ArrayList<>();
Schedule schedule = null;
for (String s : split) {
s = s.replaceAll(":","\":\"");
s = s.replaceAll(",","\",\"");
s = "{\""+s+"\"}";
HashMap map = JSONObject.parseObject(s, HashMap.class);
schedule = new Schedule();
schedule.setArea((String) map.get("area"));
schedule.setPrice((String) map.get("price"));
schedule.setServiceFee((String) map.get("serviceFee"));
schedule.setOriPrice((String) map.get("oriPrice"));
//赋值
list.add(schedule);
}
//最终数据打印
System.err.println(JSONObject.toJSONString(list));
}
static class Schedule {
private String area;
private String price;
private String serviceFee;
private String oriPrice;
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getServiceFee() {
return serviceFee;
}
public void setServiceFee(String serviceFee) {
this.serviceFee = serviceFee;
}
public String getOriPrice() {
return oriPrice;
}
public void setOriPrice(String oriPrice) {
this.oriPrice = oriPrice;
}
}
方式二:
public static void main(String[] args) {
String str = "area:0,price:4500,serviceFee:300;area:2452,price:4800,serviceFee:300";
str = str.replaceAll(":","\":\"");
str = str.replaceAll(",","\",\"");
str = str.replaceAll(";","\"},{\"");
str = "[{\""+str+"\"}]";
List<Schedule> list = JSONObject.parseArray(str,Schedule.class);
//最终数据打印
System.err.println(JSONObject.toJSONString(list));
}
static class Schedule {
private String area;
private String price;
private String serviceFee;
private String oriPrice;
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getServiceFee() {
return serviceFee;
}
public void setServiceFee(String serviceFee) {
this.serviceFee = serviceFee;
}
public String getOriPrice() {
return oriPrice;
}
public void setOriPrice(String oriPrice) {
this.oriPrice = oriPrice;
}
}