Я получаю следующее сообщение об ошибке в моем коде:Apex 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
Проблема кэширования звучит как нечто, что требует представления нового случая, если это действительно так, поскольку код, который я смоделировал после этого, прямо из руководства разработчика Apex. Другими словами, если это правда, это ошибка Salesforce и будет исправлена. Но лично я застрял в ручном разборе, и это было фантастично, когда я разобрался в нюансах класса/методов парсера JSON. Просто текущие ограничения функций serialize/deserialize достаточно, чтобы дать мне крипы. 2-х центов. – Adam
Я подал дело, но они отклонили его, поскольку у меня нет поддержки премьер-министра. Я понимаю, что мне приходится платить за поддержку, но на самом деле не платить, чтобы отправить ошибку. Ну что ж. Поэтому, когда вы говорите «ручной разбор», вы не говорите о написании собственного анализатора JSON в Apex, не так ли? – jhericks