Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
输出正确的JSON响应_Json_Apex - Fatal编程技术网

输出正确的JSON响应

输出正确的JSON响应,json,apex,Json,Apex,我使用以下代码生成一些JSON输出: generator = JSON.createGenerator(true); generator.writeStartObject(); generator.writeFieldName('employees'); generator.writeStartArray(); for(User u : getUsers()) { generator.writeStartObject();

我使用以下代码生成一些JSON输出:

    generator = JSON.createGenerator(true);
    generator.writeStartObject();
    generator.writeFieldName('employees');
    generator.writeStartArray();
    for(User u : getUsers()) {
        generator.writeStartObject();
        generator.writeStringField('key', u.Id);
        generator.writeStringField('nickname', u.CommunityNickname);
        generator.writeStringField('lastname', u.LastName);
        if(u.Region__c != null) {
            generator.writeStringField('region', u.Region__c);
        }
        else {
            generator.writeStringField('region', '');
        }
        if(u.Home_District__c != null) {
            generator.writeStringField('district', u.Home_District__c);
        }
        else {
            generator.writeStringField('district', '');
        }
        if(u.Home_District__c != null) {
            generator.writeStringField('pack', u.Pack__c);
        }
        else {
            generator.writeStringField('pack', '');
        }
        generator.writeStringField('employee', u.Name);
        generator.writeEndObject();
    }
    generator.writeEndArray();
    generator.writeFieldName('events');
    generator.writeStartArray();
    for(Site_Visit__c sv : getSiteVisits()) {
        generator.writeStartObject();
        if(sv.Status__c.toLowercase() == 'scheduled') {
            generator.writeFieldName('assigned');
            generator.writeStartObject();
            if(sv.Intended_Start_Date_Time__c != null) generator.writeStringField('start_date', String.valueOf(sv.Intended_Start_Date_Time__c));    
            if(sv.Estimated_Completion_Date_Time__c != null) generator.writeStringField('end_date', String.valueOf(sv.Estimated_Completion_Date_Time__c));
            generator.writeStringField('text', String.valueOf(sv.Name));
            if(sv.Assigned_Employee__c != null) generator.writeStringField('section_id', String.valueOf(sv.Assigned_Employee__c));
            generator.writeStringField('id', String.valueOf(sv.Id));
            generator.writeStringField('color', String.valueOf('#ffffff'));
            generator.writeStringField('textColor', String.valueOf('#000000'));
            generator.writeEndObject(); 
        }
        if(sv.Status__c.toLowercase() == 'unassigned') {
            generator.writeFieldName('unassigned'); 
            generator.writeStartObject();
            if(sv.Intended_Start_Date_Time__c != null) generator.writeStringField('start_date', String.valueOf(sv.Intended_Start_Date_Time__c));    
            if(sv.Estimated_Completion_Date_Time__c != null) generator.writeStringField('end_date', String.valueOf(sv.Estimated_Completion_Date_Time__c));
            generator.writeStringField('text', String.valueOf(sv.Name));
            generator.writeStringField('id', String.valueOf(sv.Id));
            generator.writeStringField('color', String.valueOf('#ffffff'));
            generator.writeStringField('textColor', String.valueOf('#000000'));
            generator.writeStringField('woNumber', String.valueOf(sv.Work_Order__r.Name));
            generator.writeStringField('woType', String.valueOf(sv.Work_Order__r.Work_Order_Type__c));
            generator.writeStringField('customer', String.valueOf(sv.Work_Order__r.Customer__c));
            generator.writeEndObject();             
        }
        generator.writeEndObject(); 
    }
    generator.writeEndArray();
    generator.writeEndObject();
电流输出如下所示:

{
employees:
    employee
    employee
events:
    unassigned:
        event
    unassigned:
        event
    assigned:
        event
    assigned:
        event
    (empty object?)
    (empty object?)
}
我需要它是这样的:

{
employees:
    employee
    employee
events:
    unassigned:
        event
        event
    assigned:
        event
        event
}
事件是一个对象(不是数组),它有两个字段:已分配和未分配。这些字段中的每一个都是一个与它们的描述相匹配的事件数组


感谢您的帮助。

查看您的代码片段,我不明白您为什么需要在apex中使用JSON生成器,而您可以简单地使用

因为您使用多个对象,所以我将创建一个自定义内部类,并构建这些对象的列表并序列化它们

public MyInnerClass(User u, Site_Visit__c s){
   String userName = u.Name;
   String siteName = s.Name;
}


List<MyOuterClass.MyInnerClass> customInnerClass = new List<MyOuterClass.MyInnerClass>();

//add my inner class objects made up of properties from all my sobjects

customInnerClass.serialize(); 
//This will be a well formed JSON object for any API or JS Framework.
publicMyInnerClass(用户、站点、访问){
字符串用户名=u.名称;
字符串siteName=s.Name;
}
List customInnerClass=新列表();
//添加由所有Sobject的属性组成的内部类对象
customInnerClass.serialize();
//对于任何API或JS框架,这都是一个格式良好的JSON对象。

这看起来像Java。您应该添加java标记。@这不是有效的java代码。请注意单引号字符串。或者它们被替换了……它不是java,而是apex,它是java的一个衍生物。