面对从JSON创建动态对象的问题

时间:2017-08-22 07:46:01

标签: json salesforce apex

我正在研究用户可以从生产框中获取数据并通过提供生产URL和信用卡将其插入开发人员沙箱的要求。我能够获取数据,但不知何故无法将JSON转换为所需的对象类型。由于我是Salesforce的新手,请不要介意基本问题。

以下是工作逻辑和问题:

for(DataMigrationNAP__c d : dataMigrationNAP) // this loop will give all NAP object names and its corresponding fields like {'Account','Name,Phone,Id'},{'Opportunity', 'ID,Name, blah,blah'}...
{         
    final PageReference theUrl = new PageReference(SERVER_URL + '/services/data/v22.0/query/');
            String soql = 'Select '+d.NAPObjectFields__c+' From '+d.Name+' a limit ' + recordCount;
            theUrl.getParameters().put('q',soql);
            request = new HttpRequest();
            request.setEndpoint(theUrl.getUrl());
            request.setMethod('GET');
            request.setHeader('Authorization', 'OAuth ' + SESSION_ID);
            String body = (new Http()).send(request).getBody();
            JSONParser parser = JSON.createParser(body);

            do{
                parser.nextToken();
            }while(parser.hasCurrentToken() && !'records'.equals(parser.getCurrentName()));
            parser.nextToken();

            String typeName = 'List<' + d.Name + '>';
            Type t  = Type.forName(typeName);
            List<sobject> acc1 = (List<sobject>) parser.readValueAs(t);
            insert acc1;
            System.debug('Values inserted : ' + acc1);
        }

通过上面的逻辑,我试图获取Object by Object的数据并将其插入dev沙箱,我能够在JSON中完美地获取但是无法从JSON转换为所需的对象。问题是我不能硬编码对象或类型名称,因为它将是一个对象列表。如果您需要任何其他细节,请告知我们并提前致谢。也适用于任何其他方法,但它应该只通过顶点编码。

1 个答案:

答案 0 :(得分:0)

你是否已经尝试过JSON2Apex,如果不是,那么这可能是个好人。