0 votes
1 view
in Salesforce by (11.9k points)

I want to deserialize JToken content to an object (User). How am I able to do this?

Here is my JSON string:

string json = @"[{""UserId"":0,""Username"":""jj.stranger"",""FirstName"":""JJ"",""LastName"":""stranger""}]";

This being sent to an api parameter as JToken.

User class:

public class user

{

    public int UserId {get; set;}

    public string Username {get; set;}

    public string FirstName {get; set;}

    public string LastName {get; set;}

}

Web Api Method:

public IHttpActionResult Post([FromBody]JToken users)

{

       UserModel.SaveUser(users);

       //...

}

API Invocation in Salesforce:

string json = '[{"UserId":0,"Username":"jj.stranger","FirstName":"JJ","LastName":"stranger"}];

HttpRequest req = new HttpRequest();

HttpResponse res = new HttpResponse();

Http http = new Http();

req.setEndpoint('test.com/api/UserManagement');

req.setMethod('POST');

req.setBody(json);

req.setHeader('Content-Type', 'application/json');

try {

    res = http.send(req);

} catch(System.CalloutException e) {

    System.debug('Callout error:' + e);

}

System.debug(res.getBody());

1 Answer

0 votes
by (30.1k points)

Trying using JToken.ToObject generic method.

Here are the client and server code which will help you to solve this problem.

Server API Code:

public void Test(JToken users)

 {

     var usersArray = users.ToObject<User[]>();

 }

Here is the client code I used.

string json = "[{\"UserId\":0,\"Username\":\"jj.stranger\",\"FirstName\":\"JJ\",\"LastName\":\"stranger\"}]";

HttpClient client = new HttpClient();

var result = client.PostAsync(@"http://localhost:50577/api/values/test", new StringContent(json, Encoding.UTF8, "application/json")).Result;

The object will get converted to Users array without any issues.

Related questions

Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...