我得到我的代码以下错误:顶点JSON解析错误
System.JSONException空不知道的Apex对象来 反序列化的类型[线:1,列:1] 11(系统代码) Class.FactorLab.FactorLabWebservices.RetrieveUsersFromFactorLab:线 60,第1个Class.FactorLab.PullUsers.execute:线61,第1列
这里是有问题的代码:
public static List<FactorLabPullUser> RetrieveUsersFromFactorLab(List<String> ids){
HttpRequest req = getHttpRequest(baseUrl + '/ws/sfdc/people/retrieve', 'POST');
req.setBody(JSON.serialize(ids));
req.setHeader('Content-Type', 'application/json');
if(Test.isRunningTest()){
return null;
}
HttpResponse res = sendRequest(req);
// This is the line with the error
List<FactorLabPullUser> flusers = (List<FactorLabPullUser>)JSON.deserialize(res.getBody(), Type.forname('List<FactorLabPullUser>'));
return flusers;
}
我确定它接收到有效的JSON,但我不确定它在接收到此错误时接收到的确切JSON。它可以简单地得到一个空数组:
[]
它也可以得到这样的:
[ { "SFDCStatus" : "RETRIEVED",
"address" : "123 Fake St.",
"addressLine1" : "Address1",
"addressLine2" : "Address2",
"city" : "San Francisco",
"companyName" : "Big Cheese, Inc.",
"deleted" : false,
"email" : "[email protected]",
"firstName" : "James",
"hireDate" : "2000-04-15T00:00:00Z",
"id" : 39,
"lastName" : "Willard",
"lastUpdated" : "2011-11-23T05:44:03Z",
"myersBriggs" : "SFDC",
"name" : "James Willard",
"phone" : "415-555-1212",
"position" : "Big Chief",
"regions" : [ { "deleted" : false,
"id" : 445,
"name" : "Mountain"
} ],
"state" : "CA",
"yearsExp" : 20.0,
"zip" : "94131"
},
{ "SFDCStatus" : "RETRIEVED",
"deleted" : false,
"firstName" : "Daniel",
"id" : 40,
"lastName" : "Adams",
"lastUpdated" : "2011-11-23T05:44:03Z",
"name" : "Daniel Adams"
}
]
任何想法?有人告诉我这是一个Salesforce.com的错误,但即使这是真的,似乎也必须有一个解决方法。
这工作,但根据代码的原作者,将一个只工作一会儿,然后开始再次获得相同的错误,直到您将其切换回原来的方式。某种“缓存”问题。这对我没有任何意义。这对你有意义吗? – jhericks 2012-02-20 16:22:05
缓存问题听起来像是需要提交新案例的事情,如果它确实是真的,因为我之后建模的代码直接来自Apex开发人员指南。换句话说,如果这是真的,这是一个Salesforce的bug,并且会被修复。但个人而言,我一直坚持使用手动解析,一旦我找到了系统JSON解析器类/方法的细微差别,这真是太棒了。只是当前的序列化/反序列化功能的限制足以让我感到毛骨悚然。 2美分。 – Adam 2012-02-20 21:13:10
我提交了一个案例,但他们拒绝了,因为我没有主要的支持。我明白必须为支持付费,但不是真正付费来提交错误。好吧。所以,当你说“手动解析”时,你并不是在谈论在Apex中编写自己的JSON解析器吗? – jhericks 2012-02-21 01:43:10