Json的规格规定如下
1) 并列的数据之间用逗号(", ")分隔。
2) 映射用冒号(": ")表示。
3) 并列数据的集合(数组)用方括号("[ ]")表示。
4) 映射的集合(对象)用大括号("{ }")表示。
有如下两条Json格式的数据,两条数据之间用逗号(", ")分隔
[["2022-05-31T12:17:52.000+0000","0065g00000FFUJtAAP","0065g00000FFUJtAAP"],["2022-06-07T04:57:32.000+0000","0065g000007pkZOAAY","0c86D0000008OUqQAM"]]
把它存储在Object的项目中,进行反序列化处理。
【deserializeUntyped】方法用于将JSON内容反序列化成基本数据类型的集合,不能反序列化sObject类型。
public with sharing class JsonParseringClass {
public JsonParseringClass() {
Project__c projectItem = [SELECT Id,SYS_Approval__c FROM Project__c WHERE Id = 'a025g00000AJaWUAA1'];
if (projectItem?.SYS_Approval__c != null
&& projectItem?.SYS_Approval__c.startsWith('[')
&& projectItem?.SYS_Approval__c.endsWith(']')) {
List<Object> deserializeUntypedJson = (List<Object>)JSON.deserializeUntyped(projectItem?.SYS_Approval__c);
System.debug('>deserializeUntypedJson>>'+deserializeUntypedJson);
}
}
}
Log出力结果:
USER_DEBUG [12]|DEBUG|>deserializeUntypedJson>>((2022-05-31T12:17:52.000+0000, 0065g00000FFUJtAAP, 0065g00000FFUJtAAP), (2022-06-07T04:57:32.000+0000, 0065g000007pkZOAAY, 0c86D0000008OUqQAM))
详细出力
public with sharing class JsonParseringClass {
public JsonParseringClass() {
Project__c projectItem = [SELECT Id,SYS_Approval__c FROM Project__c WHERE Id = 'a025g00000AJaWUAA1'];
if (projectItem?.SYS_Approval__c != null
&& projectItem?.SYS_Approval__c.startsWith('[')
&& projectItem?.SYS_Approval__c.endsWith(']')) {
List<Object> deserializeUntypedJson = (List<Object>)JSON.deserializeUntyped(projectItem?.SYS_Approval__c);
for (Object obj : deserializeUntypedJson) {
System.debug('>obj>>'+obj);
for (Object item : (List<Object>)obj) {
System.debug('>item>>'+item);
}
}
}
}
}
serialize方法用于将基本数据类型序列化成Json格式,如下取出表中的Json数据,进行添加并序列化之后更新对应项目。
public with sharing class JsonParseringClass {
/**Opportunity Prefix*/
private static final String SOBJECT_TYPE_PREFIX_OPPORTUNITY
= Schema.SObjectType.Opportunity.getKeyPrefix();
public JsonParseringClass() {
Project__c projectItem = [SELECT Id,SYS_Approval__c FROM Project__c WHERE Id = 'a025g00000AJaWUAA1'];
if (projectItem?.SYS_Approval__c != null
&& projectItem?.SYS_Approval__c.startsWith('[')
&& projectItem?.SYS_Approval__c.endsWith(']')) {
List<Object> deserializeUntypedJson = (List<Object>)JSON.deserializeUntyped(projectItem?.SYS_Approval__c);
System.debug('>OldJson>>'+deserializeUntypedJson);
List<Object> jsonNewList = new List<Object>();
List<Object> jsonObNewList = new List<Object>();
jsonObNewList.add(Datetime.now().format('yyyy-MM-dd kk:mm:ss.S', 'Asia/Tykyo'));
jsonObNewList.add('0065g000007pkVyAAI');
jsonObNewList.add('0065g000007pkWFAAY');
jsonNewList.add(jsonObNewList);
deserializeUntypedJson.addAll(jsonNewList);
System.debug('>NewJson>>'+deserializeUntypedJson);
for (Object obj : deserializeUntypedJson) {
for (Object item : (List<Object>)obj) {
if (((String)item).startsWith(SOBJECT_TYPE_PREFIX_OPPORTUNITY)) {
//System.debug('>Opportunity>>'+(String)item);
}
}
}
String serializeToJson = JSON.serialize(deserializeUntypedJson);
projectItem.SYS_Approval__c = serializeToJson;
update projectItem;
System.debug('>update>>'+projectItem.SYS_Approval__c);
}
}
}
USER_DEBUG [12]|DEBUG|>OldJson>>((2022-05-31T12:17:52.000+0000, 0065g00000FFUJtAAP, 0065g00000FFUJtAAP), (2022-06-07T04:57:32.000+0000, 0065g000007pkZOAAY, 0c86D0000008OUqQAM))
USER_DEBUG [22]|DEBUG|>NewJson>>((2022-05-31T12:17:52.000+0000, 0065g00000FFUJtAAP, 0065g00000FFUJtAAP), (2022-06-07T04:57:32.000+0000, 0065g000007pkZOAAY, 0c86D0000008OUqQAM), (2022-09-23 06:50:14.163, 0065g000007pkVyAAI, 0065g000007pkWFAAY))
USER_DEBUG [32]|DEBUG|>update>>[["2022-05-31T12:17:52.000+0000","0065g00000FFUJtAAP","0065g00000FFUJtAAP"],["2022-06-07T04:57:32.000+0000","0065g000007pkZOAAY","0c86D0000008OUqQAM"],["2022-09-23 06:50:14.163","0065g000007pkVyAAI","0065g000007pkWFAAY"]]
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。