我正在尝试转换以下字符串,以便我可以从中获取属性。我试图通过获取它们的属性然后用它们制作对象来在DB中插入这些
[{“ParkingSpaces ;;;;”:“Name; CarPlate; Description; ExpirationDate; Owner”},{“ParkingSpaces ;;;;”:“A5; T555; Parkingspace A5 ;;”},{“ParkingSpaces ;;;;“:”A6; T666; Parkingspace A6 ;;“},{”ParkingSpaces ;;;;“:”A7; T777; Parkingspace A7 ;;“},{”ParkingSpaces ;;;;“:”“ }]
我从CSV文件中获取此字符串。
任何了解我如何处理此问题的人?
提前致谢。
答案 0 :(得分:0)
你的代码非常混乱,但它是可行的。您可以使用示例中的simple JSON parsing方法:
final String json = "[{\"ParkingSpaces;;;;\":\"Name;CarPlate;Description;ExpirationDate;Owner\","
{\"ParkingSpaces;;;;\":\"A5;T555;Parkingspace A5;;\"},{\"ParkingSpaces;;;;\":\"A6;T666;Parkingspace A6;;\"},{\"ParkingSpaces;;;;\":\"A7;T777;Parkingspace A7;;\"},{\"ParkingSpaces;;;;\":\"\"}]";
final org.json.JSONArray jSONArray = new JSONArray(json);
for (int i = 0; i < jSONArray.length(); i++) {
final org.json.JSONObject jSONObject = jSONArray.getJSONObject(i);
final String parkingSpaces = jSONObject.getString("ParkingSpaces;;;;");
final String spaces[] = parkingSpaces.split(";");
System.out.println(Arrays.toString(spaces));
}
}
答案 1 :(得分:0)
你所拥有的是JSON,其中包含一些以分号分隔的字符串。我根本不会称之为CSV格式。
您可以使用像Gson这样的JSON解析器将JSON解析为Java对象,但是您仍然需要从Java对象中选择“列”,因为它们没有在JSON中正确定义。
这样的东西应该有用,我建议你添加更多的错误检查,但是:
public class DBEntry {
@SerializedName("ParkingSpaces;;;;")
@Expose
private String ParkingSpaces;
public String getParkingSpaces() {
return ParkingSpaces;
}
public void setParkingSpaces(String ParkingSpaces) {
this.ParkingSpaces = ParkingSpaces;
}
}
public static void main(String[] args) {
String json = "[{\"ParkingSpaces;;;;\":\"Name;CarPlate;Description;ExpirationDate;Owner\"},{\"ParkingSpaces;;;;\":\"A5;T555;Parkingspace A5;;\"},{\"ParkingSpaces;;;;\":\"A6;T666;Parkingspace A6;;\"},{\"ParkingSpaces;;;;\":\"A7;T777;Parkingspace A7;;\"},{\"ParkingSpaces;;;;\":\"\"}]";
// Convert JSON to java objects using the popular Gson library
Gson gson = new Gson();
Type collectionType = new TypeToken<ArrayList<DBEntry>>(){}.getType();
List<DBEntry> results = gson.fromJson(json, collectionType);
boolean header = true;
for (DBEntry result : results) {
// Ignore the header and empty rows
if (header || result.getParkingSpaces().isEmpty()) { header = false; continue; }
// Grab the columns from the parking spaces string
String[] columns = result.getParkingSpaces().split(";");
// TODO: Store this record in your database
System.out.println("New entry: " + StringUtils.join(columns, ", "));
}
}