1

I am using code like below

@RestResource(urlMapping='/test/*')
global with sharing class ClassA 
{
    @HttpPost
    global static void createSomething(Wrapper1 req)
    {
        System.debug('###stringVar1 :' + req.stringVar1);
        System.debug('###stringVar2:' + req.stringVar2);
        System.debug('###Wrapper2:' + req.Wrapper2);

        Object__c obj = new Object__c();
        obj.fld1 = req.stringVar1;
        obj.fld2 = req.stringVar2;
        insert obj;

        List<Object2__c> surveyQuestionsRespList = new List<Object2__c>();
        for(Wrapper2 question : req.Wrapper2)
        {
            Object2__c obj2 = new Object2__c();
            obj2.fld4 = question.response;
            obj2.fld3 = question.someId;
            obj2.Object__c = obj.Id;
            surveyQuestionsRespList.add(obj2);
        }                 
        insert surveyQuestionsRespList;                
    }        

    global with sharing class Wrapper1
    {
        public String stringVar1{get;set;}
        public String stringVar2{get;set;}
        public List<Wrapper2> Wrapper2{get;set;}        
    }

    global with sharing class Wrapper2
    {
        public String someId{get;set;}
        public String response{get;set;}
    }        
}

How can I generate JSON for this class. Please help me. Thanks in advance.

4
  • what is the issue here can you please explain ? if you json is like Wrapper1 structure then it should work I guess..
    – Ratan Paul
    Commented Apr 15, 2016 at 5:00
  • 1
    Have you checked json2apex.herokuapp.com ? Commented Apr 15, 2016 at 5:01
  • thanks for reply, I want provide JSON using this class. But I don't know how to use serialize method for this class for generating JSON. Commented Apr 15, 2016 at 5:06
  • I want allow others to send data in JSON format. Commented Apr 15, 2016 at 5:12

2 Answers 2

3

You don't need to do anything "special"; just read the classes from front to back, and write the JSON as you go:

{ "stringVar1": "Value1",
  "stringVar2": "Value2",
  "Wrapper2": [
     { "someId": "Value3",
       "response": "Value4"
     }
   ]
}

You can confirm that you wrote the correct JSON by using json2apex; it should match your original class definitions almost exactly:

public class JSON2Apex {

    public String stringVar1;
    public String stringVar2;
    public List<Wrapper2> Wrapper2;

    public class Wrapper2 {
        public String someId;
        public String response;
    }
}
1
  • Thank You! It is helpful. exact JSON for above class:{ "Wrapper2": [ { "someId": "Value3", "response": "Value4", "wrapper3":[ { "someId2": "Value5", "response3": "Value6" } ] } ] } Commented Apr 15, 2016 at 5:54
1

Refer to Getting Started with Apex JSON

You can try to initiate your objects and serialise them:

public static void serialiseTest() {
    Wrapper1 w1 = new Wrapper1();
    w1.Wrapper2 = new list<Wrapper2> {new Wrapper2()};
    system.debug( JSON.serialize(w1));
}

Result:

{"Wrapper2":[{"someId":"value","response":"value"}],"stringVar2":"value","stringVar1":"value"}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .