8

I have an object that's pretty extensive (lots of properties and child relationships). I'd like to serialize it. So I am doing the following:

Proposal__c proposal = (Proposal__c) getRecord();
String s = JSON.serialize(proposal);

The output:

{"attributes":      
    {
       "type":"WWK_Proposal__c",
       "url":"/services/data/v29.0/sobjects/WWK_Proposal__c/a0cM0000001BfBLIA0"
    },
    "Id":"a0cM0000001BfBLIA0"
}

And that is all. How can I get the entire object serialized, perhaps even including its child relationships?

1
  • 1
    Does the object returned by getRecord() populate more fields, or just those three?
    – Mike Chale
    Commented Sep 10, 2013 at 17:07

1 Answer 1

12

You probably need to query more fields to expose them in your serialization. It would help if you posted your getRecord() code, but the following ought to work:

SObject getRecord()
{
    List<String> fieldsToQuery = Proposal__c.SObjectType.getDescribe().fields.getMap().values();
    String fields = String.join(fieldsToQuery, ', ');
    String soqlQuery = String.format('SELECT {0} FROM Proposal__c LIMIT 1', new List<String> { fields });
    return Database.query(soqlQuery)
}

Proposal__c proposal = (Proposal__c) getRecord();
String s = JSON.serialize(proposal);
1
  • Just add the new Security.stripInaccessible(AccessType.READABLE, new List<Proposal__c>{proposal}).getRecords()[0]; to only return the record with readable fields. Reference here Commented Feb 20, 2020 at 13:56

You must log in to answer this question.

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