JSONGenerator:
Since the JSON encoding
that's generated by Apex through the serialization method in the System.JSON
class isn't identical to the standard JSON encoding in some cases, the
System.JSONGenerator class is provided to enable the generation of standard
JSON-encoded content.
JSONGenerator Methods:
The following are
instance methods of the System.JSONGenerator class.
Method
|
Description
|
close
|
Closes the JSON
generator.No more content can be written after the JSON generator is closed.
|
getAsString
|
Returns the generated
JSON content.
Also, this method
closes the JSON generator if it isn't closed already.
|
isClosed
|
Returns true if the
JSON generator is closed; otherwise, returns false.
|
writeBlob
|
Writes the specified
Blob value as a base64-encoded string.
|
writeBlobField
|
Writes a field name and
value pair using the specified field name and BLOB value.
|
writeBoolean
|
Writes the specified
Boolean value.
|
writeBooleanField
|
Writes a field name and
value pair using the specified field name and Boolean value.
|
writeDate
|
Writes the specified
date value in the ISO-8601 format.
|
writeDateField
|
Writes a field name and
value pair using the specified field name and date value. The date value is
written in the ISO-8601 format.
|
writeDateTime
|
Writes the specified
date and time value in the ISO-8601 format.
|
writeDateTimeField
|
Writes a field name and
value pair using the specified field name and date and time value. The date
and time value is written in the ISO-8601 format.
|
writeEndArray
|
Writes the ending
marker of a JSON array (']').
|
writeEndObject
|
Writes the ending
marker of a JSON object ('}').
|
writeFieldName
|
Writes a field name.
|
writeId
|
Writes the specified ID
value.
|
writeIdField
|
Writes a field name and
value pair using the specified field name and identifier value.
|
writeNull
|
Writes the JSON null
literal value
|
writeNullField
|
Writes a field name and
value pair using the specified field name and the JSON null literal value.
|
writeNumber
|
Writes the specified
decimal value.
|
writeNumber
|
Writes the specified
double value.
|
writeNumber
|
Writes the specified
integer value.
|
writeNumber
|
Writes the specified
long value.
|
writeNumberField
|
Writes a field name and
value pair using the specified field name and decimal value.
|
writeNumberField
|
Writes a field name and
value pair using the specified field name and double value.
|
writeNumberField
|
Writes a field name and
value pair using the specified field name and integer value.
|
writeNumberField
|
Writes a field name and
value pair using the specified field name and long value.
|
writeObject
|
Writes the specified
Apex object in JSON format
|
writeObjectField
|
Writes a field name and
value pair using the specified field name and Apex object.
|
writeStartArray
|
Writes the starting
marker of a JSON array ('[').
|
writeStartObject
|
Writes the starting
marker of a JSON object ('{').
|
writeString
|
Writes the specified
string value.
|
writeStringField
|
Writes a field name and
value pair using the specified field name and string value.
|
writeTime
|
Writes the specified
time value in the ISO-8601 format.
|
writeTimeField
|
Writes a field name and
value pair using the specified field name and time value in the ISO-8601
format.
|
Simple Example for JSONGenerator
JSONGenerator
gen=JSON.createGenerator(true);
gen.writeStartObject();
//It is used for making starting object(‘{‘)
gen.writeStringField('Summary','Hyderabad');//Here
it is used for making name ,value pair
gen.writeEndObject();//It
is used for making end of object(‘}’)
System.debug('getAsString:'+gen.getAsString());
Output:
{
"Summary" : "Hyderabad"
}
Example
2:
public class
GoogleCalendarEvent {
public String id;
public String
htmlLink;
public DateTime
created;
public String summary;
public String
description;
public String
location;
public Integer
sequence;
public
List<GoogleEventAttendee> attendees;
public
GoogleCalendarEvent(){
this.id='EMP103';
this.htmlLink='www.google.com';
this.created=System.now();
this.summary='Hi this is
Balaji Malemarpuram';
this.description='Hello Have a
nice day';
this.location='Hyderabad';
this.sequence=2;
attendees=new
List<GoogleEventAttendee>();
GoogleEventAttendee
attend=new GoogleEventAttendee();
attend.email='mbalaji105@gmail.com';
attend.additionalGuests=10;
attend.optional=true;
attendees.add(attend);
GoogleEventAttendee
attend1=new GoogleEventAttendee();
attend1.email='Sreevalli@gmail.com';
attend1.additionalGuests=20;
attend1.optional=true;
attendees.add(attend1);
}
public Class
GoogleEventAttendee{
public String email;
public boolean
optional;
public integer
additionalGuests;
}
public void generateJson(){
JSONGenerator
gen = JSON.createGenerator(true);
gen.writeStartObject();
gen.writeStringField('id',this.id);
gen.writeDateTimeField('Created',this.created);
gen.writeStringField('Summary',this.summary);
gen.writeStringField('Description',this.description);
gen.writeStringField('Location',this.location);
gen.writeNumberField('Sequence',this.sequence);
gen.writeFieldName('attendees');
gen.writeStartArray();
//for each
attendee create a JSON object
for(GoogleEventAttendee
gEventAttendee: this.attendees){
gen.writeStartObject();
gen.writeStringField('email',
gEventAttendee.email);
gen.writeBooleanField('optional',
gEventAttendee.optional);
gen.writeNumberField('additionalGuests',
gEventAttendee.additionalGuests);
gen.writeEndObject();
}
gen.writeEndArray();
gen.writeEndObject();
//end of the
parent JSON object
String
jsonString = gen.getAsString();
System.debug('jsonString:'+jsonString);
}
}
Output:
{
"id" : "EMP103",
"Created" :
"2013-06-13T08:59:44.949Z",
"Summary" : "Hi this is Balaji
Malemarpuram",
"Description" : "Hello Have a
nice day",
"Location" : "Hyderabad",
"Sequence" : 2,
"attendees" : [ {
"email" :
"mbalaji105@gmail.com",
"optional" : true,
"additionalGuests" : 10
}, {
"email" : "Sreevalli@gmail.com",
"optional" : true,
"additionalGuests" : 20
} ]
}
Example 3:
public class
JsonstringgeneratefromAccountdata {
public void jsongenerate(){
JSONGenerator
gen = JSON.createGenerator(true);
gen.writeString('Account Data');
gen.writeStartArray();
for(Account actobj:[select id,name,type,Industry from Account limit 2]){
gen.writeStartObject();
gen.writeStringField('Account Name',actobj.Name);
gen.writeStringField('Account Type',actobj.Type);
gen.writeStringField('Industry',actobj.Industry);
gen.writeEndObject();
}
gen.writeEndArray();
System.debug('Json Account
Structure:'+gen.getAsString());
}
}
Output:
"Account Data" [ {
"Account Name" : "ABCFoundation",
"Account Type" : "Other",
"Industry" : "Engineering"
} ,
{
"Account Name" : "CDEFoundation",
"Account Type" : "Other",
"Industry" : "Agriculture"
} ]
"Account Name" : "ABCFoundation",
"Account Type" : "Other",
"Industry" : "Engineering"
} ,
{
"Account Name" : "CDEFoundation",
"Account Type" : "Other",
"Industry" : "Agriculture"
} ]
Thank you balaji. nice post
ReplyDeleteThank you balaji. nice post
ReplyDeleteThank you nice post balaji
ReplyDeleteis it the output of the 3rd example the same as the 2nd one or am I wrong? :S
ReplyDeleteIt should not be . I updated correct one. Thank you.
ReplyDeleteHi, I have multiple Sobject Data in json file, Now i want to upload this data into particular objects in a single transaction.
ReplyDeleteIs it possible, can you please explain this deaply.
Yes you can update this data into particular objects. Based on your json string you can generate class also through that you can do anything in single transaction. Look into the post below.
Deletehttp://salesforce-walker.blogspot.de/2014/12/generation-of-json-string-deserialize.html
Really nice blog post.provided a helpful information.I hope that you will post more updates like this Ruby on rails Online Course Hyderabad
ReplyDelete"Name: Ketan
ReplyDeleteAddress: Ahmedabad
State: Gujarat
City: Pune"
This is my object rich Textarea field. how can i convert into JSON String
I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post. best generator for travel trailer
ReplyDeleteYou might comment on the order system of the blog. You should chat it's splendid. Your blog audit would swell up your visitors. I was very pleased to find this site.I wanted to thank you for this great read!! best generator for travel trailer
ReplyDelete