我在控制台测试应用程序中调用了一个SalesForce API作为WebReference。
它需要的参数之一是object类型。确切地说,以下是我的代码:
$('#myForm').submit(function(e){
e.preventDefault();
var url = $('#myform').attr('action')
$('#myForm select, #myForm input').each(function(index, element){
var $element = $(element);
url += $element.attr('name') + '=' + $element.val();
url += (('#myForm select, #myForm input').length != index ? '&' : '');
})
console.log(url);
});
我正在传递上面的代码,其中API期望Item的类型为 object()。
当我拨打最后一个电话时,我看到以下错误:
{“<> f__AnonymousType0`1 [System.Int32]无法序列化
以下是我的“添加网络参考”下载它的SFObject的定义。
SFObject sfObject = new SFObject
{
type = "User",
Item = new { ExternalId = 2}
};
我四处搜索,似乎WCF序列化存在一些问题,但我在这里没有使用WCf。有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
对此的简短回答在于以下代码:
[System.Xml.Serialization.XmlElementAttribute("businessKeys", typeof(BusinessKeys))]
[System.Xml.Serialization.XmlElementAttribute("id", typeof(string))]
public object Item {
get {
return this.itemField;
}
set {
this.itemField = value;
}
}
,其中
[System.Xml.Serialization.XmlElementAttribute("businessKeys", typeof(BusinessKeys))]
[System.Xml.Serialization.XmlElementAttribute("id", typeof(string))]
部分要求它是Type String 或Type BusinessKeys 。如果发送了任何其他内容,则会因意外类型而被拒绝。如果您尝试使用 new {} 关键字欺骗系统,则会抛出刚刚抛出的错误。