Reading list Switch to dark mode

    JSON Parsing In Salesforce

    Updated 2 July 2018

    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.

    Start your headless eCommerce
    now.
    Find out More

    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.

    Note: For more information on JSONParser methods Click Here

    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.

    Output

     

    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/

    . . .

    Leave a Comment

    Your email address will not be published. Required fields are marked*


    Be the first to comment.

    Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home

    Table of Content