In this blog we’ll learn about JSON parsing in salesforce. In salesforce, we use methods of JSONParser class to parse the JSON-encoded string/content that is returned from a call to an external service such that web service(HTTP) callout.
Let’s understand the JSONParser methods by doing an example as explained below.
Dummy Json String:
-> Here we have a dummy JSON string. We will parse this JSON string and create a record for product and pricebookEntry in salesforce.
{ "title":"Shirt", "body_html":"This is product's description field", "variants":[ { "price":"21.00", }, { "price":"24.00", } ] }
-> For each variant we create a pricebookEntry in salesforce.
Key Points:
Here we have some JSONParser methods, which we are going to use to parse the above string.
1). JSON.createParser(jsonString) : Create new Parser
2). nextToken() : Locate cursor to next token.
3). getCurrentToken() : To get the current token value.
4). getCurrentName() : To get the current field name.
5). nextValue() :Locate cursor to next value.
6). getText() : To get the text value of the token.
Apex Code
1). Create a new pricebook (Name= ‘Demo’) from Pricebook>>New Pricebook>>Name= ‘Demo’>> Save.
2). Create an apex class jsonParserExample to parse the above string.
public class jsonParserExample { /** * Webkul Software. * * @category Webkul * @author Webkul * @copyright Copyright (c) 2010-2016 Webkul Software Private Limited (https://webkul.com) * @license https://store.webkul.com/license.html */ public jsonParserExample() { Pricebook2 pb = [SELECT Id FROM Pricebook2 WHERE isStandard = true limit 1]; // Get the standard Pricebook Id Pricebook2 cpb = [SELECT Id FROM Pricebook2 WHERE Name = 'Demo' limit 1]; // Get the Custom Pricebook Id Product2 prod = new Product2(); // New Product Object PricebookEntry pbe = new PricebookEntry(); // New PricebookEntry Object List<PricebookEntry> list_pbe = new List<PricebookEntry>(); // List of pricebook Entry // Dummy String to Parse String jsonString = '{\"title\":\"Shirt\",\"body_html\":\"This is products description field\",\"variants\":[{\"price\":\"21.00\"},{\"price\":\"24.00\"} ]}'; // Create parser of dummy string JSONParser parser = JSON.createParser(jsonString); // Parsing of string while(parser.nextToken()!= null) { if(parser.getCurrentToken() == JSONToken.FIELD_NAME) { parser.nextValue(); if(parser.getCurrentName() == 'title') { prod.Name = parser.getText(); } else if (parser.getCurrentName() == 'body_html') { prod.Description = parser.getText(); } else if (parser.getCurrentName() == 'variants') { while(parser.nextToken()!= JSONToken.END_ARRAY) { if(parser.getCurrentToken() == JSONToken.FIELD_NAME) { parser.nextValue(); if(parser.getCurrentName() == 'price') { pbe.UnitPrice = Decimal.valueOf(parser.getText()); } } else if(parser.getCurrentToken() == JSONToken.END_OBJECT) { if(pbe.UnitPrice != null) { list_pbe.add(pbe); } pbe = new PricebookEntry(); continue; } else if (parser.getCurrentToken() == JSONToken.START_OBJECT) { continue; } } } } } // Create the Product in salesforce. if(prod.name != null) { try{ insert prod; } catch(Exception ex) { system.debug(ex); } } // Create the pricebookEntry if(prod.Id != null && list_pbe.size()>0) { for(PricebookEntry p : list_pbe) { p.Product2Id = prod.Id; } list_pbe[0].Pricebook2Id = pb.Id; list_pbe[1].Pricebook2Id = cpb.Id; try{ insert list_pbe; } catch(Exception ex) { system.debug(ex); } } } }
2). Now open Execute Anonymous window (Ctrl+E) and execute the following code.
jsonParserExample a = new jsonParserExample();
Now, go to Product and check the created record.
Support
That’s all for JSON Parsing In Salesforce, still if you have any further query feel free to add a ticket, we will be happy to help you https://webkul.uvdesk.com/en/customer/create-ticket/
Be the first to comment.