{
    "description": "Core",
    "code": "Core",
    "Active": true,
    "category_Type": "campaign_category",
    "parent_codes": [
        "63"
    ],
    "parent_Type": "sub_brand"
}

Здесь я пытаюсь получить "parent_codes": ["63"],

Код Apex:

list<CM_CP_Reference_Data__c> refObj=[SELECT Parent_code__c, Description__c, Is_Active__c, Code__c,Parent_Description__c,Category_Type__c,Category_Type__r.name, Id, Name FROM CM_CP_Reference_Data__c where Category_Type__c IN:refrenceDatasetids.keySet()];
    if(refObj!=null){
        JSONGenerator RefDataRespGenerator = JSON.createGenerator(true);
        for(CM_CP_Reference_Data__c refDtataObj : refObj){
            if(refDtataObj.Parent_code__c!=null){
                RefDataRespGenerator.writeFieldName('parent_codes');
                RefDataRespGenerator.writeStartArray();
                for(String arrayRec : refDtataObj.Parent_code__c.split(';')){
                    RefDataRespGenerator.writeString(string.valueOf(arrayRec) );
                }
                RefDataRespGenerator.writeEndArray();
            } 
        }
    }
1
Dhanik Lal Sahni 6 Авг 2019 в 09:39

2 ответа

Вы должны добавить writeStartObject и writeEndObject в объект JSONGenerator. Проверьте код ниже, он должен работать.

JSONGenerator RefDataRespGenerator = JSON.createGenerator(true);
RefDataRespGenerator.writeStartObject();
for(CM_CP_Reference_Data__c refDtataObj : refObj){
    if(refDtataObj.Parent_code__c!=null){
        RefDataRespGenerator.writeFieldName('parent_codes');
        RefDataRespGenerator.writeStartArray();
        for(String arrayRec : refDtataObj.Parent_code__c.split(';')){
            RefDataRespGenerator.writeString(string.valueOf(arrayRec) );
        }
        RefDataRespGenerator.writeEndArray();
    } 
}
RefDataRespGenerator.writeEndObject();

String jsonString = RefDataRespGenerator.getAsString(); 

System.debug('===jsonString===='+jsonString);
0
Dhanik Lal Sahni 6 Авг 2019 в 09:54

JSON на самом деле не является родным для серверных языков, таких как Apex, и поэтому работать с ними на серверных языках гораздо сложнее. Вместо использования генератора JSON вы можете просто использовать serialize для этих стандартных типов данных Apex, чтобы получить JSON. Вы можете проверить код ниже:

list<CM_CP_Reference_Data__c> refObj=[SELECT Parent_code__c, Description__c, Is_Active__c, Code__c,Parent_Description__c,Category_Type__c,Category_Type__r.name, Id, Name 
                                          FROM CM_CP_Reference_Data__c 
                                          where Category_Type__c IN:refrenceDatasetids.keySet()];

    List<String> parentCodesList = new List<String>();

    for(CM_CP_Reference_Data__c acc : refObj){
        parentCodesList.add(acc.Parent_code__c);
    }
    String parent_codes = JSON.serialize(new Map<String,List<String>>{'parent_codes'=>parentCodesList});
    System.debug(parent_codes);
0
salesforce-sas 6 Авг 2019 в 10:26