function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Jorge Ortega TraversoJorge Ortega Traverso 

JSON Serialization & Deserialization

Hi all,

I'm serializing a custom class containing case object and other objects to JSON, and case's picklist serialize as this
"Status":{"value":"Finished"}
producing this error message when trying to deserialize
System.JSONException: Cannot deserialize instance of picklist from START_OBJECT value { or request may be missing a required field at [line:1, column:733]

Is it any kind of bug on the JSON Serialization or Deserialization?

When serializing Case records directly, picklists serialize in different way
TestJSON.cls

================================

List<Case> lc = new List<Case>();

lc.add(new Case(Status = 'Finished', External_ID__c = 'IDEXT_1'));

lc.add(new Case(Status = 'Finished', External_ID__c = 'IDEXT_2'));

lc.add(new Case(Status = 'Finished', External_ID__c = 'IDEXT_3'));

String js = JSON.serialize(lc);

System.debug(js);



================================

36.0 APEX_CODE,DEBUG;APEX_PROFILING,DEBUG;CALLOUT,INFO;DB,INFO;VALIDATION,INFO;WORKFLOW,INFO
Execute Anonymous: List<Case> lc = new List<Case>();
Execute Anonymous: lc.add(new Case(Status = 'Finished', External_ID__c = 'IDEXT_1'));
Execute Anonymous: lc.add(new Case(Status = 'Finished', External_ID__c = 'IDEXT_2'));
Execute Anonymous: lc.add(new Case(Status = 'Finished', External_ID__c = 'IDEXT_3'));
Execute Anonymous: String js = JSON.serialize(lc);
Execute Anonymous: System.debug(js);
11:23:45.28 (28314495)|USER_INFO|[EXTERNAL]|00524000000Uis5|4contrdev4.jorge.ortega@endesa.accenture.com|hora estándar de Europa central|GMT+02:00
11:23:45.28 (28336160)|EXECUTION_STARTED
11:23:45.28 (28342791)|CODE_UNIT_STARTED|[EXTERNAL]|execute_anonymous_apex
11:23:45.28 (30735799)|USER_DEBUG|[6]|DEBUG|[{"attributes":{"type":"Case"},"Status":"Finished","External_ID__c":"IDEXT_1"},{"attributes":{"type":"Case"},"Status":"Finished","External_ID__c":"IDEXT_2"},{"attributes":{"type":"Case"},"Status":"Finished","External_ID__c":"IDEXT_3"}]
11:23:45.30 (30797222)|CUMULATIVE_LIMIT_USAGE
11:23:45.30 (30797222)|LIMIT_USAGE_FOR_NS|(default)|
  Number of SOQL queries: 0 out of 100
  Number of query rows: 0 out of 50000
  Number of SOSL queries: 0 out of 20
  Number of DML statements: 0 out of 150
  Number of DML rows: 0 out of 10000
  Maximum CPU time: 0 out of 10000
  Maximum heap size: 0 out of 6000000
  Number of callouts: 0 out of 100
  Number of Email Invocations: 0 out of 10
  Number of future calls: 0 out of 50
  Number of queueable jobs added to the queue: 0 out of 50
  Number of Mobile Apex push calls: 0 out of 10

11:23:45.30 (30797222)|CUMULATIVE_LIMIT_USAGE_END

11:23:45.28 (30839576)|CODE_UNIT_FINISHED|execute_anonymous_apex
11:23:45.28 (32935152)|EXECUTION_FINISHED




Class code
global class EquipmentRemovalJob {
        public B1ActivationRequest activation;
        //There is some business methods
}
public class B1ActivationRequest {
        @InvocableVariable
        public Case request;
        @InvocableVariable
        public Contract_ATR__c contract;
        @InvocableVariable
        public CUPS__c cups;
}



Here you have a complete object JSON serialization
{"activation":{"request":{"attributes":{"type":"Case","url":"/services/data/v37.0/sobjects/Case/5008E0000051XOlQAM"},"LastModifiedDate":"2016-08-04T07:33:14.000+0000","LaunchAnnulmentFlow__c":false,"AccountId":"0018E00000LTgvcQAD","Process_Code_Description__c":"B1","Activation_mode__c":"J","Ready_To_Annulment_Flows__c":false,"Do_NOT_send_communication__c":false,"Energy_guarantor__c":"0018E00000LTgvcQAD","BusinessHoursId":"01m24000000Ku16AAC","CreatedById":"00524000000Uis5AAC","Reason_unsubscription_Code_Description__c":"03","ClosedOnCreate":false,"IsClosedOnCreate":false,"Pass_Code__c":"01","Term_symbol_activation__c":"_IM1_/servlet/servlet.FileDownload?file=01525000000A0IU_IM2_¡Qué pena! la imagen no puede mostrarse_IM3_","Status":{"value":"Finished"},"Activation_business_term_icon__c":"_IM1_/img/samples/flag_red.gif_IM2_No se encuentra la imagen_IM3_","IsDeleted":false,"ReceptionDateToShow__c":"2016-08-04T06:34:00.000+0000","isManual__c":true,"CodeDemand__c":"002900001025","Priority":"Medium","Is_first_evaluation__c":true,"REE_Distributor_Code_Description__c":"0029","CreatedByAlias":"JOT","IsStopped":false,"IsEscalated":false,"CUPS__c":"a0r8E000000m841QAA","Term_symbol_acceptance__c":"_IM1_/servlet/servlet.FileDownload?file=01525000000A0IU_IM2_¡Qué pena! la imagen no puede mostrarse_IM3_","CreatedDate":"2016-08-04T06:35:23.000+0000","Id":"5008E0000051XOlQAM","Subscription_Claims__c":false,"Reception_date__c":"2016-08-04T06:00:00.000+0000","Request_Label_Dinamic_Record_Choice__c":"00001025 B1","Input_channel__c":"Online","CNAE__c":"5221","EDE_Energy_user__c":"0018E00000LTiF2QAL","Hidden_Reception_Date__c":"2016-08-04","Term_status_activation__c":"Within term","Stop__c":false,"Ready2CalculateActivationMode__c":false,"IsClosed":false,"VU_issue__c":false,"Activation_expected_date_old__c":"2016-08-19","TestingLaunchingRequestActivationFlow__c":true,"Activation_expected_date__c":"2016-08-04","Term_status_acceptance__c":"Within term","OwnerId":"00G24000001E9t1EAC","Claims_exists_interactions__c":false,"CaseNumber":"00001025","Activation_date__c":"2016-08-04","Acceptance_business_term_icon__c":"_IM1_/img/samples/flag_red.gif_IM2_No se encuentra la imagen_IM3_","LastModifiedByAlias":"JOT","Ready_To_Col__c":true,"Payment_holder__c":"0018E00000LTgvcQAD","Contract_holder__c":"0018E00000LTgvcQAD","Original_Contract__c":"a0u8E000000Z6XNQA0","Requested_power_1__c":4.4,"SystemModstamp":"2016-08-04T07:33:14.000+0000","Energy_user__c":"0018E00000LTiF2QAL","TestingLaunchingActValCollisionFlow__c":false,"Ready_To_Launch_Policy_Mail__c":false,"EventsProcessedDate":"2016-08-04T06:35:23.000+0000","Enforced_communication__c":false,"PM_type__c":"5","Ready_To_Validation_Flows__c":false,"Process_Code_Reason_Unsubscription_F__c":"B1 - 03","LastModifiedById":"00524000000Uis5AAC"},"cups":{"attributes":{"type":"CUPS__c","url":"/services/data/v37.0/sobjects/CUPS__c/a0r8E000000m841QAA"},"Id":"a0r8E000000m841QAA","Provision_s_tension__c":"38","Tension_s_measure__c":null,"State_derivation__c":{"value":"5"},"Provisioning_address__c":"AFUERAS AFUERAS 0 . ALMUDEVAR . HUESCA . 22283","CNAE__c":"5221","Contract_holder__c":"","Payment_holder__c":"","Energy_user__c":"","Guarantor__c":"","SCE_CEMPTITU__c":"00001","CFINCA__c":4784.0,"CDERIND__c":1.0,"CPTOSERV__c":1.0,"Name":"ES0031300004784001XX0F","ContractInForce__c":""},"contract":{"attributes":{"type":"Contract_ATR__c","url":"/services/data/v37.0/sobjects/Contract_ATR__c/a0u8E000000Z6XNQA0"},"Id":"a0u8E000000Z6XNQA0","Sequential__c":101.0,"Entry_date__c":"2016-04-04","Code_contract_Policy_version__c":"8506172861","Version_end_date__c":"2016-08-04","Leaving_date__c":"2016-08-04","SCE_CLINNEG__c":"1","SCE_CEMPTITU__c":"1","REE_distributor_code_description__c":"0029","Description_agent_REE_code__c":null,"Status__c":{"value":"21"}}}}