JsonMappingException: Kann nicht bauen Instanz CommonsMultipartFile
Ich mit Spring-MVC 3 und meine Bewerbung, ich schicke einige Informationen
mit mehreren Anhängen, und diese beiden Dateien haben einen Titel, Id, etc. Also machte ich einen DTO wie folgt
public class MyDTO {
Long id;
Integer age;
MultipartFile infoFile;
//getter setter
Ich bin nur die Schaffung eines JSON
Objekt nach oben DTO-Klasse in meinem JS
Datei.
Hier ist mein Controller
mapping:
@RequestMapping(value = "/saveInfo", method = RequestMethod.POST)
public @ResponseBody String saveInfo(
@RequestParam(value = "data", required = true) String stdData,
@RequestParam(value = "fileData", required = false) MultipartFile[] files,
HttpSession session,HttpServletRequest request) {
MyDTO dto;
try {
dto = mapper.readValue(stdData, new TypeReference<MyDTO>() {});
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Aber ich erhalte folgenden Fehler:
org.codehaus.jackson.map.JsonMappingException: Can not construct instance of org.springframework.web.multipart.commons.CommonsMultipartFile,
problem: no suitable creator method found to deserialize from JSON String
at [Source: java.io.StringReader@19747c9; line: 1, column: 336] (through reference chain: com.avi.dto.MyDTO["hbvFile"])
- Sie wahrscheinlich möchte einen no-arg-Konstruktor, und
CommonsMultipartFile
nicht ein. - Konnte Sie zeigen, wie Ihre
JSON
aussieht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eigentlich finde ich die Antwort für mich. Wir können nicht senden Sie die Datei direkt im JSON-Objekt. Ein
File
Objekt nicht halten Sie eine Datei, Sie enthält den Pfad zu der Datei, dh. C:/hi.txt. Wenn es das ist, was wir setzen in unserem JSON, werde es produzieren{"File" : "C:/hi.txt"}
Es nicht enthalten der Inhalt der Datei. Wir könnten also auch einfach die Datei Pfad direkt
Wenn Sie versuchen, eine Datei hochladen mit JSON, eine Möglichkeit zum Auslesen der bytes aus der Datei mit Java 7 NIO
Base64 Kodieren diese bytes und schreibt Sie als String in die JSONObject. Mithilfe Von Apache Commons Codec
Gibt es
94 Unicode
Zeichen, die dargestellt werden kann als ein byte nach dem JSON-spec (wenn Ihr JSON übertragen wird, als UTF-8).