10

How to return values from Webmethod to the client in JSON format?

There are two static int values that i want to return.
Do I need to create new object with those 2 properties and return it?
The GetStatus() method is called frequently and i don't like the idea of creating a special object each time just for json formatting...

[WebMethod]
public static int GetStatus()
{
    int statusProcess,statusProcessTotal;

    Status.Lock.EnterReadLock();
    statusProcess=Status.Process; //Static field
    statusProcessTotal=Status.ProcessTotal; //Static field        
    Status.Lock.ExitReadLock();

    return ...
}

On client side I catch the return value in :

function OnSucceeded(result, userContext, methodName)   
(PageMethods.GetStatus(OnSucceeded, OnFailed);)
user3428422
  • 4,300
  • 12
  • 55
  • 119
kenny
  • 2,000
  • 6
  • 28
  • 38

1 Answers1

11

I would just go with an object. It fits with what you need to do. If you have two return values you have to put them together in a structured way.

  public class StatusResult
        {
            public int StatusProcess { get; set; }
            public int StatusProcessTotal { get; set; }
        }

  [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public StatusResult GetStatus()
        {
            int statusProcess,statusProcessTotal;

            //Status.Lock.EnterReadLock();
            statusProcess = 5;
            statusProcessTotal = 1; //Static field        


            var result = new StatusResult();
            result.StatusProcess = statusProcess;
            result.StatusProcessTotal = statusProcessTotal;

            return result;
        }
Jason Rowe
  • 6,216
  • 1
  • 33
  • 36