1

このjson文字列を値に解析する必要があります。

"start": { "dateTime": "2013-02-02T15:00:00+05:30" }, "end": { "dateTime": "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 は 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);
                }
            }
        }
    }
4

2 に答える 2

1

クマールの答えに似ていますが、外部アプリを使用していません。

startクラス替えは正解だった

public class start{
    public string datetimew;
}

次に、デシリアライザーを介して実行する前に、JSON を解析するだけです。

string newjsondata = jsonData.replace('"dateTime"','"datetimew"');
JSONParser parser = JSON.createParser(newjsondata);
while (parser.nextToken() != null) {
   ...
}
于 2013-03-13T14:06:33.170 に答える
0

string.replace() 関数を使用し、dateTime という名前のキーを dateTime__x のようなものに置き換えます。heruko プラットフォームで json to apex コンバーター アプリを使用して json を apex に変換した場合は、Json.deserialize を使用して解析できます。

http://json2apex.herokuapp.com/

上記のリンクは、Json を apex クラスに変換するアプリを指しており、Json.serialize を使用して json を apex クラス構造に解析できます。

于 2013-03-13T03:07:47.150 に答える