Сбой многочастного приложения Spring Boot при чтении многочастного ввода CSV - PullRequest
0 голосов
/ 04 июня 2019

У меня есть приложение весенней загрузки, которое ожидает ввод CSV-файла вместе с телом запроса. Мое приложение не работает с ошибкой ниже.

JSON parse error: Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries; nested exception is com.fasterxml.jackson.core.JsonParseException: Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries\n at [Source: (PushbackInputStream); line: 3, column: 2]

Мой контроллер

@RestController
public class DataValidatorController {

    private static final String VALIDATE_DATA_URI ="/validatedata";

    private static final Logger logger = LoggerFactory.getLogger(DataValidatorController.class);

    private DataValidateService dataValidateService;



    public DataValidatorController(DataValidateService dataValidateService) {
        this.dataValidateService = dataValidateService;
    }



    @PostMapping(VALIDATE_DATA_URI)
    public DataValidateResponse validateData(@RequestPart("metadata") DataValidateRequest dataValidateRequest,
                                             @RequestPart("datafile") MultipartFile dataFile) throws IOException {

        logger.info("validateData() Starts");
        return dataValidateService.validateData(dataValidateRequest,dataFile);
    }

}

Содержимое моего CSV-файла

имя, возраст

person1,32

person2,33

1 Ответ

0 голосов
/ 04 июня 2019

Протестировал этот код, используя CURL, и я получил 200.

DataValidatorController.class

    private static final String VALIDATE_DATA_URI ="/validatedata";

    @PostMapping(value = VALIDATE_DATA_URI)
    public ResponseEntity validateData(@RequestPart("metadata") MyPojo myPojo,
                                       @RequestPart("datafile") MultipartFile dataFile) throws IOException {
        System.out.println(String.format("Data - %s", myPojo.getId() ));
        return ResponseEntity.ok().build();
    }

MyPojo.class

//Used lombok

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class MyPojo
{
    private String id;

}

Запрос CuRL

curl -i -H "Content-Type: multipart / form-data" -F "metadata=@test.json; type = application / json" -F "datafile=@test.csv; type = application/ CSV "http://localhost:8080/validatedata

test.json

{
 "id": "1"
}

test.csv

name,age
person1,32
person2,33

Обновите меня, если вы получили ответ.

РЕДАКТИРОВАТЬ

enter image description here

Я получил правильный результат и в Почтальоне.

Заголовок => Тип контента: multipart / form-данные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...