在调用salesforce标准REST API时以及通过Custom REST apex查询时,可以获得不同的响应

时间:2013-10-26 07:22:21

标签: salesforce

当我查询salesforce REST API (/services/data/v29.0/query?q=select+id,Name,AccountNumber,OwnerId,Site,Description,NumberOfEmployees,Fax,Industry,Phone,Website,Type+from+Account+where+id='0019000000NMrbv')时 我得到了回应。

{
    "attributes" : {
      "type" : "Account",
      "url" : "/services/data/v29.0/sobjects/Account/0019000000NMrbvAAD"
    },
    "Id" : "0019000000NMrbvAAD",
    "Name" : "Test G",
    "AccountNumber" : null,
    "OwnerId" : "00590000001BpGnAAK",
    "Site" : null,
    "Description" : null,
    "NumberOfEmployees" : null,
    "Fax" : null,
    "Industry" : null,
    "Phone" : null,
    "Website" : null,
    "Type" : null
}

现在我创建了一个像下面一样的顶点休息服务,上面有相同的查询

@HttpGet
 global static Account doGet(){
    Account acc = [select id,Name,AccountNumber,OwnerId,Site,Description,NumberOfEmployees,Fax,Industry,Phone,Website,Type from Account where id ='0019000000NMrbvAAD'];
    return acc;
}

我打电话给这项服务时得到的回应是

{
   "attributes":    {
      "type": "Account",
      "url": "/services/data/v29.0/sobjects/Account/0019000000NMrbvAAD"
   },
   "Name": "Test G",
   "OwnerId": "00590000001BpGnAAK",
   "Id": "0019000000NMrbvAAD"
}

现在请比较上面的2个响应。来自顶点休息服务的响应没有具有空值的字段。

我们已经创建了一个salesforce ios原生应用。此服务使用标准REST api,但由于执行问题,我们计划创建APEX休息服务, 但由于响应的这种差异,我们将不得不在许多地方更改代码来处理这个问题。

是否有任何人遇到过此类问题,如果您建议如何处理此问题会有所帮助?我们可以做些什么,以便顶点休息服务返回相同的响应 正如标准的saleforce REST api。

1 个答案:

答案 0 :(得分:0)

我们注意到Salesforce序列化中的类似行为。通常根本不包括空对象。

可能是API使用自己的序列化程序。

无论如何,你并不孤单。

https://salesforce.stackexchange.com/questions/13820/json-serialize-method-not-returning-null-fields-part-deux