解析来自googlesheets的JSON响应
我正在从事Salesforce CRM项目,在该项目中,我需要访问Google工作表中的值,扫描它们以查找特定的关键字,如果它们满足特定条件,则将给定行中的数据复制到Salesforce中的对象中 我正在使用GoogleSheetsAPI和Apex-Salesforce编程语言访问GoogleSheet的主体。 我遇到的问题是,我从GoogleSheets文件获得的每个数据行都是一个单独的JSON文件 正如您将在下面的示例中看到的,这些键仅位于第一个JSON文件中,随后的每个文件仅包含值 有没有办法将包含值(从第二个值开始)的每个JSON文件与第一个文件中的键配对 下面是JSON响应的样子:解析来自googlesheets的JSON响应,json,api,parsing,salesforce,apex,Json,Api,Parsing,Salesforce,Apex,我正在从事Salesforce CRM项目,在该项目中,我需要访问Google工作表中的值,扫描它们以查找特定的关键字,如果它们满足特定条件,则将给定行中的数据复制到Salesforce中的对象中 我正在使用GoogleSheetsAPI和Apex-Salesforce编程语言访问GoogleSheet的主体。 我遇到的问题是,我从GoogleSheets文件获得的每个数据行都是一个单独的JSON文件 正如您将在下面的示例中看到的,这些键仅位于第一个JSON文件中,随后的每个文件仅包含值 有没有
"range": "Angels!B2:AD2501",
"majorDimension": "ROWS",
"values": [
[
"Complete?",
"Name",
"ID :",
"Source",
"LinkedIn",
"Twitter",
"Profile",
"",
"AA Profile",
"Email",
"Location: City",
"Location: Country",
"Twitter Bio",
"Bio",
"Known For:",
"Investments",
"Preferred Industry",
"Vertical",
"Associated Venture Fund",
"Type",
"Total Investments",
"Total Exits",
"",
"Priority",
"Comments",
"Email",
"Contact Owner",
"Account Owner",
"In CRM"
],
[
"Yes",
"John Doe",
"2305",
"CrowdSourced",
"https://www.linkedin.com/in/someone-34738265",
"",
"",
"",
"https://angel.co/person",
"",
"Something",
"UK",
"",
"Executive Manager",
"Long term investor.",
"list, of, companies, separated,by, a, comma",
"IT, Advertising",
"",
"",
"Person (individual)",
"239",
"16",
"TRUE",
"H"
],
[
"Yes",
"A. Nikiforov",
"766",
"Pitchbook2",
"https://www.linkedin.com/pub/dir/alexey/nikiforov",
"",
"https://my.pitchbook.com?i=106763-86",
"",
"",
"gfm@polytechnics.spb.ru",
"Saint Petersburg",
"Russia",
"",
"Mr. A. Nikiforov is the Owner at Izdatelstvo Politekhnika. Mr. A. Nikiforov is the Owner at A. Nikiforov.",
" ",
"Izdatelstvo Politekhnika",
"Media",
"",
"",
"Angel (individual)",
"1",
"",
"FALSE"
],
[
"Yes",
"Aarish Patel",
"1043",
"Pitchbook2",
"https://www.linkedin.com/in/aarish-patel-06387983",
"",
"https://my.pitchbook.com?i=151254-01",
"",
"",
"",
"",
"",
"",
"Mr. Patel serves as the Non-Executive Director at Reds True Barbecue. He serves as the Angel Investor at Aarish Patel.",
" ",
"Reds True Barbecue",
"Restaurants, Hotels and Leisure, Retail",
"",
"",
"Angel (individual)",
"1",
"",
"FALSE"
]];
您可以将json反序列化为Apex类,然后在数组中循环。结果是一个映射列表,其中键是列名,值是相关值
public class range {
List<List<String>> values;
}
public static List<Map<String,String>> parseJSON(String jsonStringFromCallout){
range r = (range)JSON.deserialize(jsonStringFromCallout,range.class);
List<String> headers = range.values[0];
List<Map<String,String>> allRows = new List<Map<String,String>>();
for ( Integer i=1; i<range.values.size(); i++ ){
Map<String,String> thisRow = new Map<String,String>();
for ( Integer j=0; j<range.values[i].size(); j++ ){
thisRow.put(headers[j],range.values[i][j]);
}
allRows.add(thisRow);
}
return allRows;
}
公共类范围{
列表值;
}
公共静态列表parseJSON(字符串jsonStringFromCallout){
range r=(range)JSON.deserialize(jsonStringFromCallout,range.class);
列表标题=范围值[0];
List allRows=新列表();
对于(Integer i=1;i,您可以将json反序列化为Apex类,然后在数组数组中循环。结果是一个映射列表,其中键是列名,值是相关值
public class range {
List<List<String>> values;
}
public static List<Map<String,String>> parseJSON(String jsonStringFromCallout){
range r = (range)JSON.deserialize(jsonStringFromCallout,range.class);
List<String> headers = range.values[0];
List<Map<String,String>> allRows = new List<Map<String,String>>();
for ( Integer i=1; i<range.values.size(); i++ ){
Map<String,String> thisRow = new Map<String,String>();
for ( Integer j=0; j<range.values[i].size(); j++ ){
thisRow.put(headers[j],range.values[i][j]);
}
allRows.add(thisRow);
}
return allRows;
}
公共类范围{
列表值;
}
公共静态列表parseJSON(字符串jsonStringFromCallout){
range r=(range)JSON.deserialize(jsonStringFromCallout,range.class);
列表标题=范围值[0];
List allRows=新列表();
对于(Integer i=1;iThank you Matt,上述方法可行,但现在我面临堆大小过大的问题(这是一个包含2500行数据的电子表格)。那太糟糕了,要弄清楚的是JSONString本身是否太大,或者代码的其他方面是否导致了异常。要测试的是注释掉部分代码并尝试使用更小的JSON文件。嘿,Matt,我就是这么做的。我将JSON拆分为更小的块,现在可以工作了。谢谢你的支持谢谢你的帮助,Matt,上面的方法很有效,但是现在我面临堆大小太大的问题(这是一个包含2500行数据的电子表格)。那太糟糕了,要弄清楚的是JSONString本身是否太大,或者代码的其他方面是否导致了异常。要测试的是注释掉部分代码并尝试使用更小的JSON文件。嘿,Matt,我就是这么做的。我将JSON拆分为更小的块,现在可以工作了。谢谢你的支持你在这件事上的所有帮助!