我得到我的代碼以下錯誤:頂點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