Json внутри json не работает при загрузке пружины - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь использовать JSON внутри запроса JSON.

например:

{
"name":"newdeeeepaajlf",
"category":"fsafaa",
"jsonData":{
   "a":"value"
}
}

сейчас, когда я пытаюсь получить его в моем DTO, который имеет

private JSONObject jsonData;

конвертируется в бланк JSON

{}

Я застрял в этом.

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Мы можем использовать карту для преобразования данных

public class TestModel {
    private String name;
    private String category;
    private Map<String, Object> jsonObj;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public Map<String, Object> getJsonObj() {
        return jsonObj;
    }

    public void setJsonObj(Map<String, Object> jsonObj) {
        this.jsonObj = jsonObj;
    }

}

и использовать класс выше от контроллера, как показано ниже

@PostMapping("/test")
    public boolean test(@RequestBody TestModel model) {

        System.out.println(model.getCategory());
        System.out.println(model.getName());
        JSONObject jsonObj = new JSONObject(model.getJsonObj());
        System.out.println(jsonObj);

        return true;
    }

Для запроса

{
    "category":"json",
    "name":"name",
    "jsonObj": {
        "a": "value"
    }
}

это будет печать

json
name
{a=value}
0 голосов
/ 11 февраля 2020

у вас есть ошибка в json, если у вас json что-то вроде ниже.

{
  "name": "newdeeeepaajlf",
  "category": "fsafaa",
  "jsonData": {
    "a": "value"
  }
}

вы можете использовать это как класс

public class Codebeautify {
 private String name;
 private String category;
 JsonData jsonDataObject;


 // Getter Methods 

 public String getName() {
  return name;
 }

 public String getCategory() {
  return category;
 }

 public JsonData getJsonData() {
  return jsonDataObject;
 }

 // Setter Methods 

 public void setName(String name) {
  this.name = name;
 }

 public void setCategory(String category) {
  this.category = category;
 }

 public void setJsonData(JsonData jsonDataObject) {
  this.jsonDataObject = jsonDataObject;
 }
}
public class JsonData {
 private String a;


 // Getter Methods 

 public String getA() {
  return a;
 }

 // Setter Methods 

 public void setA(String a) {
  this.a = a;
 }
}

также json В json работает с весенней загрузкой, это очень распространенный сценарий. используйте ObjectMapper для сопоставления json с классом.

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