Deepak Singh
Deepak Singh

Reputation: 94

Json inside json not working in spring boot

I am trying to use JSON inside a JSON request.

for example:

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

now when I am trying to get it in my DTO which has

private JSONObject jsonData;

it gets converted in a blank JSON

{}

I am stuck in this.

Upvotes: 0

Views: 1063

Answers (2)

karepu
karepu

Reputation: 328

We can use map to convert the data

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;
    }

}

and use above class from controller like below

@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;
    }

For request

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

it will print

json
name
{a=value}

Upvotes: 2

Negi Rox
Negi Rox

Reputation: 3922

you have a error in json if you have json something like below.

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

you can use this as a class

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;
 }
}

also json within json is working with in spring boot its a very common scenario. use ObjectMapper to map json with class.

Upvotes: 0

Related Questions