如何在apex中序列化Json字符串

如何在apex中序列化Json字符串,json,salesforce,apex-code,visualforce,Json,Salesforce,Apex Code,Visualforce,我需要将这个json字符串解析为值 “开始”:{“日期时间”:“2013-02-02T15:00:00+05:30”},“结束”:{“日期时间”:“2013-02-02T16:00:00+05:30”} 问题是我在apex(salesforce)中使用JSONParser。 我的班级是: public class wrapGoogleData{ public string summary{get;set;} public string id{get;set;} pub

我需要将这个json字符串解析为值

“开始”:{“日期时间”:“2013-02-02T15:00:00+05:30”},“结束”:{“日期时间”:“2013-02-02T16:00:00+05:30”}

问题是我在apex(salesforce)中使用JSONParser。 我的班级是:

 public class wrapGoogleData{

    public string summary{get;set;}
    public string id{get;set;}
    public string status;
    public creator creator;
    public start start;

    public wrapGoogleData(string entnm,string ezid,string sta, creator c,start s){
        summary= entnm;
        id= ezid;
        status = sta;
        creator = c;
        start = s;
    }  
}
public class creator{
    public string email;
    public string displayName;
    public string self;
}
public class start{
    public string datetimew;
}
除了上面字符串中的datetime之外,我可以从中获取所有数据。因为datetime在apex中是一个保留关键字,所以我无法在我的类中将变量名指定为datetime。

任何建议

Json解析器代码:

JSONParser parser = JSON.createParser(jsonData );
    while (parser.nextToken() != null) {
        // Start at the array of invoices.
        if (parser.getCurrentToken() == JSONToken.START_ARRAY) {
            while (parser.nextToken() != null) {
                // Advance to the start object marker to
                //  find next invoice statement object.
                if (parser.getCurrentToken() == JSONToken.START_OBJECT) {
                    // Read entire invoice object, including its array of line items.
                    wrapGoogleData inv = (wrapGoogleData)parser.readValueAs(wrapGoogleData.class);

                    String s = JSON.serialize(inv);
                    system.debug('Serialized invoice: ' + s);

                    // Skip the child start array and start object markers.
                    //parser.skipChildren();
                    lstwrap.put(inv.id,inv);
                }
            }
        }
    }
使用string.replace()函数并将名为dateTime的键替换为dateTime\uux之类的键,然后您可以使用Json进行解析。如果您已经在heruko平台上使用Json-to-apex convertor应用程序将Json转换为apex,则可以反序列化

上面的链接指向一个将Json转换为apex类的应用程序,然后您可以使用Json.serialize将Json解析为apex类结构。

使用string.replace()函数并将名为dateTime的键替换为dateTime_uux,然后您可以使用Json进行解析。如果您已经在heruko平台上使用Json-to-apex convertor应用程序将Json转换为apex,则可以进行反序列化


上面的链接指向一个将Json转换为apex类的应用程序,然后您可以使用Json.serialize将Json解析为apex类结构。

类似于Kumar的答案,但不使用外部应用程序

改变你的
start
课程是正确的想法

public class start{
    public string datetimew;
}
现在,只需在通过反序列化程序运行JSON之前解析它

string newjsondata = jsonData.replace('"dateTime"','"datetimew"');
JSONParser parser = JSON.createParser(newjsondata);
while (parser.nextToken() != null) {
   ...
}

与Kumar的答案类似,但没有使用外部应用程序

改变你的
start
课程是正确的想法

public class start{
    public string datetimew;
}
现在,只需在通过反序列化程序运行JSON之前解析它

string newjsondata = jsonData.replace('"dateTime"','"datetimew"');
JSONParser parser = JSON.createParser(newjsondata);
while (parser.nextToken() != null) {
   ...
}

请发布使用JSONParserPosted的APEX代码json解析器代码。请发布尝试序列化的json。请发布使用JSONParserPosted的APEX代码json解析器代码。请发布尝试序列化的json