无法将日期保存到salesforce?

时间:2017-05-26 10:35:12

标签: c# salesforce

令我惊讶的是,这不是一件好事;将日期保存到 Salesforce

我正在尝试更新一个类型日期的字段,但它会引发一些奇怪的错误。

代码:

var objSer = new JavaScriptSerializer();
string json = objSer .Serialize(new{
          startdate = sfdcValue
       });
MyUpdateMethod("objectName/" + id, json);

我尝试将日期转换为IS0 8601标准(如SO所示)

1。)DateTime.UtcNow.ToString(“s”,System.Globalization.CultureInfo.InvariantCulture)

2。)DateTime.UtcNow.ToString(“o”)

错误信息:

  

{“message”:“无法从VALUE_STRING反序列化double的实例   值2017-05-26T10:31:40.5790708Z或请求可能遗漏a   [line:1,column:2]中的必填字段“,”errorCode“:”JSON_PARSER_ERROR“}

1 个答案:

答案 0 :(得分:1)

您没有详细说明您使用哪种方法在服务器和客户端之间进行通信。我正在使用Javascript Remoting(apex方法上的@RemoteAction),我遇到了这个问题。对我来说,Salesforce期望日期和日期时间字段为日期序列(如果使用不同的访问方法,您的里程可能会有所不同)。

鉴于我正在处理一个动态的字段列表,我最终在客户端上创建了一对marshall / unmarshall函数,这些函数在将数据发送回Salesforce之前创建了我删除的仅客户端从属字段(注意:下面的示例是javascript而不是c#)。在您的情况下,马歇尔/解放者可能采取不同的方法:

// Provide an client-only date field based on a date serial (SFDC input)
function createDateDerivedField(currentRecord, fieldName) {
    Object.defineProperty(currentRecord, fieldName + '__ui', {
        enumerable: true,
        get: function () {
            return currentRecord[fieldName] == null ? null : new Date(currentRecord[fieldName]);
        },
        set: function(newValue) {
            // Update the original field
            currentRecord[fieldName] = newValue == null ? null : (new Date(newValue)).getTime(); // Convert back to date serial
        }
    });
}