I have the a JSON string which contains of User,Account and contact details. How do I deserialize the JSON using Apex.
Json input is given below:
[
{
\"us\":{
\"attributes\":{
\"type\":\"User\",
\"url\":\"/services/data/v39.0/sobjects/User/00528000004fOcqAAE\"
},
\"Id\":\"00528000004fOcqAAE\",
\"LastName\":\"Contact Last Name\",
\"Username\":\"some1@gmail.com\",
\"Email\":\"some@gmail.com\",
\"ContactId\":\"0032800000g7iJjAAI\"
},
\"con\":
{
\"attributes\":{
\"type\":\"Contact\",
\"url\":\"/services/data/v39.0/sobjects/Contact/0032800000g7iJjAAI\"
},
\"Id\":\"0032800000g7iJjAAI\",
\"AccountId\":\"0012800000z7RzkAAE\",
\"LastName\":\"Contact Last Name\",
\"Account\":{
\"attributes\":{
\"type\":\"Account\",
\"url\":\"/services/data/v39.0/sobjects/Account/0012800000z7RzkAAE\"
},
\"Id\":\"0012800000z7RzkAAE\",
\"Name\":\"Test Account Name sree\"
}
},
\"acc\":{
\"attributes\":{
\"type\":\"Account\",
\"url\":\"/services/data/v39.0/sobjects/Account/0012800000z7RzkAAE\"
},
\"Id\":\"0012800000z7RzkAAE\",
\"Name\":\"Test Account Name sree\"
}
}
]
i am getting this json from the following class:
@RestResource(urlMapping='/threeobjects/*')
Global class ThreeObjects_Getting {
@HttpGet
global static String doGet(){
List<MultiWrapper> listmw = new List<MultiWrapper>();
RestRequest req = RestContext.request;
RestResponse res = RestContext.response;
Map<Id, User> contactToUser = new Map<Id, User>();
for (User u : [select Id, FirstName, LastName, UserName, Email,ContactId from User where ContactId != null limit 1] ) {
contactToUser.put(u.ContactId, u);
}
for (Contact c : [select Id, AccountId, Lastname, Firstname, Email, Account.Id, Account.Name, Account.Phone from Contact where Id in :contactToUser.keySet()]) {
listmw.add(new MultiWrapper(contactToUser.get(c.Id), c.Account, c));
}
System.debug('mw::::'+listmw);
return json.serialize(listmw);
}
Global class MultiWrapper {
User us;
Account acc;
Contact con;
Public MultiWrapper (User us, Account acc, Contact con){
this.us = us;
this.acc = acc;
this.con = con;
}
}
@HttpPut
global static String doPut(){
String jsonstring = doGet();
System.debug('jsonstring::::'+jsonstring);
JSONParser parser = JSON.createParser(jsonstring);
while (parser.nextToken() != null) {
if (parser.getCurrentToken() == JSONToken.START_ARRAY) {
while (parser.nextToken() != null) {
if (parser.getCurrentToken() == JSONToken.START_OBJECT) {
Jsonparsercls le = (Jsonparsercls)parser.readValueAs(Jsonparsercls.class);
System.debug('leee::'+le);
/* List<Jsonparsercls> myList = (List<Jsonparsercls>)System.JSON.deserialize(jsonstring, List<String>.class);
System.debug('myList::'+myList); */
}
}
}
}
return jsonstring;
}
public class Jsonparsercls{
Account acc{get;set;}
Contact con{get;set;}
User use{get;set;}
}
}
while I am trying with
List<Jsonparsercls> myList = (List<Jsonparsercls>)System.JSON.deserialize(jsonstring, List<Jsonparsercls>.class)
I am getting error like Illegal value for primitive
How can I read data from jsonstring?