Spring boot Неожиданный символ% code 37 - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь прочитать атрибут строкового типа, который содержит данные типа json:

код реакции js:

axios.post("http://localhost:8080/MenuFiltre/filtreregioncloser",JSON.stringify(FilterRegion))

код весенней загрузки:

@PostMapping("/filtreregioncloser")
    public Iterable<Closerfprfx>gettab1(@RequestBody String filterRegion) throws JsonMappingException, JsonProcessingException
    {
        
    ObjectMapper mapper = new ObjectMapper();
    FilterRegionOne fro = mapper.readValue(filterRegion, FilterRegionOne.class);
    

        
        System.out.println(fro.isRfx());

         return null;      
    }

, но когда я пытаюсь отобразить данные в консоли, я получил эту ошибку

com.fasterxml.jackson.core.JsonParseException: Unexpected character ('%' (code 37)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"%7B%22rfx%22%3Atrue%2C%22rfp%22%3Atrue%2C%22rfp_x%22%3Atrue%2C%22allclassification%22%3Atrue%2C%22eu%22%3Afalse%2C%22americas%22%3Afalse%2C%22aae%22%3Afalse%2C%22ger%22%3Afalse%2C%22eu2%22%3Afalse%2C%22latam%22%3Afalse%2C%22empty%22%3Afalse%2C%22allregion%22%3Afalse%2C%22idm%22%3Afalse%2C%22dig%22%3Afalse%2C%22eps%22%3Afalse%2C%22allpractice%22%3Afalse%2C%22c

пожалуйста, что мне теперь делать, чтобы отобразить данные!

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Для ax ios вашим вторым параметром должен быть сам объект JSON, поэтому удалите JSON.stringify():

axios.post("http://localhost:8080/MenuFiltre/filtreregioncloser", FilterRegion)

Кроме того, в вашем контроллере я бы порекомендовал разобрать JSON прежде, чем он попадет в ваш метод, чтобы иметь меньше шаблонного кода:

@PostMapping("/filtreregioncloser")
public Iterable<Closerfprfx>gettab1(@RequestBody FilterRegionOne filterRegion) {
    System.out.println(fro.isRfx());
    return null;
}
0 голосов
/ 05 августа 2020

Если FilterRegion должен быть телом запроса POST-запроса, тогда вам не нужно JSON преобразовывать его в строку при использовании ax ios, ax ios сделает это за вас.

Также, если вы используете аннотацию @RestController на уровне класса вместо @Controller (не видно, что вы использовали), то spring обработает сопоставление JSON, и вы можете сразу получить доступ к POJO

@PostMapping("/filtreregioncloser")
    public Iterable<Closerfprfx>gettab1(@RequestBody FilterRegionOne filterRegion {
    
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...