将JSON字符串转换为java中的自定义对象

时间:2016-04-01 11:08:05

标签: java json

我正在尝试转换以下字符串,以便我可以从中获取属性。我试图通过获取它们的属性然后用它们制作对象来在DB中插入这些

  

[{“ParkingSpaces ;;;;”:“Name; CarPlate; Description; ExpirationDate; Owner”},{“ParkingSpaces ;;;;”:“A5; T555; Parkingspace A5 ;;”},{“ParkingSpaces ;;;;“:”A6; T666; Parkingspace A6 ;;“},{”ParkingSpaces ;;;;“:”A7; T777; Parkingspace A7 ;;“},{”ParkingSpaces ;;;;“:”“ }]

我从CSV文件中获取此字符串。

任何了解我如何处理此问题的人?

提前致谢。

2 个答案:

答案 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));
        }
    }

use some bindings like Jackson

答案 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, ", "));
    }
}