0

I am trying to create Dto class in Java for a json which is similar to this.

    {
    "abcList":[
        {
            "keyA":"valA",
            "lstB":[{
                "keyC":"valC"
            },{
                "keyC":"valC1"
            }]
        },{
            "keyA":"valA",
            "lstB":{
                "keyC":"valC2"
            }
        }
    ]
}

Is the Json even valid? Inside the list abcList, the first object has a list "lstB" and in the second object, the field "lstB" is not a list.

If the json is valid, how would I create the corresponding Java Classes? This does not work.

class TopObject{
        List<ABC> abcList;


    }
    class ABC{
        public String keyA;
        public List<B> lstB;
    }
    class B{
        public String keyC;
    }

I mean I can parse it successfully with gson, iterating through every element of the json with a code like below,

if(lstB.isJsonArray()){
                System.out.println("lstb is array");
                List<B> arLstB = parseBArray(lstB);
                abc.setLstB(arLstB);
            }else{
                System.out.println("lstb is not array");
                B b = parseB(lstB);
                abc.addB(b);
            }

but the original json is very large and i will end up writing the iterating logic for days. I want a solution where I can annotate it properly and do the mapping in one shot like this.

gson.fromJson(jsonInString, TopObject.class);
Rajan
  • 1,501
  • 4
  • 21
  • 37

0 Answers0