在Apex中,怎样有效率的从JSON数据中取数据
2022年08月14日
文章浏览:152

在Salesforce和其它系统的集成中,往往我们会遇到API的使用。

而API就有返回值,基本上是JSON类型的数据。

而JSON数据的提取,就成为众多新手的棘手问题。


现在分享给大家一个最有效的提取数据的办法

思路就是先把JSON数据转换成Apex类,然后从实例化的Apex类中取得数据。


大致步骤是这样的

1。把JSON数据在下面的工具中转换成Apex类

https://www.adminbooster.com/tool/json2apex

https://json2apex.herokuapp.com/


比如我们要把下面的JSON数据转换成Apex代码

{ "user" : { "name" : "Simon Fell", "twitter" : "@superfell" } }


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


关注 收藏