[英]Convert String data from mysql table to json list in java
我想將字符串轉換為json列表。 我目前正在使用spring boot處理web api。 有一個表在ssingle列包含多個值,類似地,所有列都具有多個值。 喜歡:有一家汽車公司。 有一個名為models的列 - 它包含多個模型,然后有一個價格列,分別包含所有模型的價格。 現在我必須將這些字符串轉換為json格式。
我嘗試在java中使用split()
,但這是將地址位置作為輸出。
模型類
..........//getters and setters and declarations
@Override
public String toString() {
String ar = car_type;
String ar1[]=ar.split(",");
int l = ar1.length;
return "{" +
"\"car_comp\":" +"\"" + car_comp+ "\""+"," +
"\"car_type\":" +"\""+ ar1 + "\""+","+
"\"car_price\":" +"\""+ car_price+ "\""+","+
"\"car_comp_value\":"+"\"" + car_comp_value +"\""+
'}';
}
我使用length函數來檢查是否正在創建大小合適的數組。
輸出
"car_comp": {
"car_comp": "bmw",
"car_type": "[Ljava.lang.String;@4017b770",
"car_price": "$1500",
"car_comp_value": "$65.4M"
}
請忽略數據......但是車型並沒有顯示出我的預期。 說實話,這是我第一次在web api和json工作,我不知道如何用它做事。 預期產出:
"car_comp": {
"car_comp": "bmw",
"car_type": [{modelA},{modelB},{modelC}],
"hb_unit_hints": "Kg",
"hb_value": "65.4"
}
提前致謝。
由於您使用的是Spring引導,因此您可以使用ObjectMapper
實現它。
因此,我將創建模型以進行清晰的解釋
class Car {
@JsonProperty(value = "car_company")
private String carCompany;
@JsonProperty(value = "car_type")
private List<CarType> carType;
@JsonProperty(value = "car_price")
private String carPrice;
// Getter, Setter, All Args
}
class CarType {
@JsonProperty(value = "type")
private String type;
//Getter, Setter, All Args
}
ObjectMapper mapper = new ObjectMapper();
List<CarType> carTypes = Arrays.asList(new CarType("SEDAN"), new CarType("HATCHBACK"));
Car car = new Car("Telsa", carTypes, "1000");
System.out.println(mapper.writeValueAsString(car));
//Output :
//{"car_company":"Telsa","car_type":[{"type":"SEDAN"},{"type":"HATCHBACK"}],"car_proce":"1000"}
JsonNode jsonNode = mapper.valueToTree(car);
// It also gives you JsonNode
String ar = car_type;
String ar1 [] = ar.split(“,”);
在那里,我覺得你的問題是試圖將表實體的String列映射到List model字段。 如果你有一個帶有List字段的汽車模型,那么使用jackson-objectmapper模型到JSON字符串轉換是直截了當的:
汽車模型:
public class Car {
String car_comp;
List<String> car_type;
String car_price;
String car_comp_value;
}
將Car model對象轉換為JSON字符串:
ObjectMapper objectMapper = new ObjectMapper();
Car car = new Car();
car.car_comp = "BMW";
car.car_type = Arrays.asList("modelA", "modelB", "modelC");
car.car_price = "$1500";
car.car_comp_value = "$65.4M";
String json = objectMapper.writeValueAsString(car);
如果使用JPA Entity將數據庫表映射到模型,則可以使用javax.persistence.AttributeConverter將逗號分隔的String列轉換為實體的List字段,如:
定制屬性轉換器:
public class CarTypeConverter implements AttributeConverter<List<String>, String> {
@Override
public Long convertToDatabaseColumn(List<String> attribute) {
if (attribute == null) return null;
return attribute.stream().reduce((x, y) -> x + "," + y).orElse("");
}
@Override
public List<String> convertToEntityAttribute(String dbColumnValue) {
if (dbColumnValue == null) return null;
String[] typeArray = dbColumnValue.split(",");
List<String> typeList = Arrays.stream(typesArray).collect(Collectors.toList());
return typeList;
}
}
汽車數據庫實體:
@Entity
@Table(name = "car_comp")
class Car {
@Column(name = "car_comp")
String car_comp;
@Column(name = "car_type")
@Convert(converter = CarTypeConverter.class)
List<String> car_type;
@Column(name = "car_price")
String car_price;
@Column(name = "car_value")
String car_comp_value;
//getters and setter below...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.