在Salesforce和其它系统的集成中,往往我们会遇到API的使用。
而API就有返回值,基本上是JSON类型的数据。
而JSON数据的提取,就成为众多新手的棘手问题。
现在分享给大家一个最有效的提取数据的办法
思路就是先把JSON数据转换成Apex类,然后从实例化的Apex类中取得数据。
大致步骤是这样的
1。把JSON数据在下面的工具中转换成Apex类
https://www.adminbooster.com/tool/json2apex
https://json2apex.herokuapp.com/
比如我们要把下面的JSON数据转换成Apex代码
2。我们会得到一个压缩包,里面包含了Apex代码+Apex的TestClass代码。
我们把这个Zip压缩包解压,得到下面两个文件
3。在Salesforce平台上面执行代码
这是系统自动生成的代码
JSONToApex类
public class JSONToApex {
public class User {
public String name;
public String twitter;
}
public User user;
public static JSONToApex parse(String json) {
return (JSONToApex) System.JSON.deserialize(json, JSONToApex.class);
}
}
@IsTest
public class JSONToApex_Test {
static testMethod void testParse() {
String json = '{ \"user\" : { \"name\" : \"Simon Fell\", \"twitter\" : \"@superfell\" } }';
JSONToApex obj = JSONToApex.parse(json);
system.debug('■obj.User.twitter---->'+obj.User.twitter);
}
}
然后执行TestClass
下面就是从JSON数据中取得数据的结果。非常方便。
55.0 APEX_CODE,DEBUG;APEX_PROFILING,INFO;CALLOUT,INFO;DB,INFO;NBA,INFO;SYSTEM,DEBUG;VALIDATION,INFO;VISUALFORCE,INFO;WAVE,INFO;WORKFLOW,INFO
17:41:43.0 (919823)|USER_INFO|[EXTERNAL]|0055h000004YWm7|yusizhong009@gmail.com|(GMT+09:00) 日本標準時 (Asia/Tokyo)|GMT+09:00
17:41:43.0 (1062685)|EXECUTION_STARTED
17:41:43.0 (1149378)|CODE_UNIT_STARTED|[EXTERNAL]|01p5h00000KRoOC|JSONToApex_Test.testParse()
17:41:43.0 (9347988)|USER_DEBUG|[8]|DEBUG|■obj.User.twitter---->@superfell
17:41:43.9 (9451939)|CUMULATIVE_LIMIT_USAGE
17:41:43.9 (9451939)|LIMIT_USAGE_FOR_NS|(default)|
Number of SOQL queries: 0 out of 100
Number of query rows: 0 out of 50000
Number of SOSL queries: 0 out of 20
Number of DML statements: 0 out of 150
Number of Publish Immediate DML: 0 out of 150
Number of DML rows: 0 out of 10000
Maximum CPU time: 0 out of 10000
Maximum heap size: 0 out of 6000000
Number of callouts: 0 out of 100
Number of Email Invocations: 0 out of 10
Number of future calls: 0 out of 50
Number of queueable jobs added to the queue: 0 out of 50
Number of Mobile Apex push calls: 0 out of 10
17:41:43.9 (9451939)|CUMULATIVE_LIMIT_USAGE_END
17:41:43.0 (9523203)|CODE_UNIT_FINISHED|JSONToApex_Test.testParse()
17:41:43.0 (9537939)|EXECUTION_FINISHED