#java #angular #spring-boot #angular-httpclient
#java #angular #весенняя загрузка #angular-httpclient
Вопрос:
В моей серверной части Spring Boot я создал объект JSON из HashMap
HashMap<String, ClassData> val = obj.unZipIt(file.getOriginalFilename());
Gson Jobj = new Gson();
System.out.println(Jobj.toJson(val));
return ResponseEntity.status(HttpStatus.OK).body(Jobj.toJson(val));
В моем интерфейсе Angular я принимаю ответ объекта JSON
obj= {};
.subscribe(event => {
if (event.type === HttpEventType.UploadProgress) {
this.progress.percentage = Math.round(100 * event.loaded / event.total);
} else if (event instanceof HttpResponse) {
console.log(event.body);
this.obj['Classes'] = Object.values(event.body);
console.log(this.obj['Classes']);
document.getElementById("demo-content").style.display = "none";
}
}, (err) => {
(err.error instanceof Error)
let message = (`Code ${err.status}, Error was: ${err.error.errorMessage}`);
alert(message)
}
);
когда я печатаю свой event.body
, он выдает ответ JSON
{«FileProcessor»:{«filepath»:»C:tmpuntitledsrcFileProcessor.java»,»conceptList»:[]},»subClass»:{«filepath»:»C:tmpuntitledsrcsubClass.java»,»conceptList»:[{«parentClassName»:»Main»,»parentPath»:»C:tmpuntitledsrcMain.java»,»conceptName»:»Inheritence»,»lineNo»:1}]},»ProjectProcessor»:{«filepath»:»C:tmpuntitledsrcProjectProcessor.java»,»conceptList»:[]},»Main»:{«filepath»:»C:tmpuntitledsrcMain.java»,»conceptList»:[]},»ProjectReader»:{«filepath»:»C:tmpuntitledsrcProjectReader.java»,»conceptList»:[]}}
когда я пытаюсь извлечь значения ключа this.obj['Classes'] = Object.values(event.body);
, он выдает массив, который отделен от одного символа
есть ли способ получить ключевые значения из объекта JSON
Комментарии:
1. Верните ResponseEntity<Map<<Строка, ClassData>>: spring сериализует карту в JSON для вас и установит правильный тип содержимого. В данный момент вы возвращаете текстовый / обычный, а не application / json. Кроме того, используйте привязку в вашем интерфейсе, вместо того, чтобы выполнять манипуляции с DOM.
2. Привет @JBNizet после возврата
<Map<<String, ClassData>>
я получаю ошибку, подобную этойERROR 13112 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-1] Exception processing template "upload": Error resolving template [upload], template might not exist or might not be accessible by any of the configured Template Resolvers
3. Вам нужно аннотировать метод с помощью
@ResponseBody
или весь контроллер с помощью@RestController
4. @JBNizet Привет, я только что изменил значение на JASON Parse из интерфейса, и это работает