-1

I have the result of an API call which looks like:

{"Operations":[{"OperationId":"2","OperationObjectId":"Application","OperationName":"UnlockSession","OperationParameters":[{"Name":"viewModel","Value":"model"},{"Name":"returnUrl","Value":"https://"}],"OperationCaller":{"UserPrincipalName":"bob","ClientIPAddress":""},"OperationResult":"Succeeded","OperationStatus":200,"OperationRequest":{"Method":"POST","Url":""},"OperationStartedTime":"2013-08-20T12:04:17.5462357Z","OperationCompletedTime":"2013-08-20T12:04:17.9979469Z"}],"ContinuationToken":null}

Ideally I want to convert it to an object so I can do stuff like:

object.OperationObjectID; // gives Application
object.Method; // gives POST
object.OperationResult; // gives Succeeded

Does any one know how that is done? Does the JSON parse need to be aware of the format?

Thanks, Andrew

andrewb
  • 2,995
  • 7
  • 54
  • 95
  • What is meant by "Custom" JSON? – Ray Toal Aug 22 '13 at 06:22
  • 1
    Please take a look at this StackOverflow answer: [http://stackoverflow.com/questions/2246694/how-to-convert-json-object-to-custom-c-sharp-object][1] [1]: http://stackoverflow.com/questions/2246694/how-to-convert-json-object-to-custom-c-sharp-object – RRR Aug 22 '13 at 06:23
  • 1
    Use [json.net](http://james.newtonking.com/projects/json-net.aspx) – drewdles Aug 22 '13 at 06:25

2 Answers2

1

you can use Json.Net as below

dynamic object = JObject.Parse(yorjsonstring);

object.Operations[0].OperationObjectID;
object.Operations[0].Method;
object.Operations[0].OperationResult;

rather than using dynamic object you can generate classes for your json and serialize to those classes like below. you can get help of http://json2csharp.com/ site for generate classes

public class OperationParameter
{
    public string Name { get; set; }
    public string Value { get; set; }
}

public class OperationCaller
{
    public string UserPrincipalName { get; set; }
    public string ClientIPAddress { get; set; }
}

public class OperationRequest
{
    public string Method { get; set; }
    public string Url { get; set; }
}

public class Operation
{
    public string OperationId { get; set; }
    public string OperationObjectId { get; set; }
    public string OperationName { get; set; }
    public List<OperationParameter> OperationParameters { get; set; }
    public OperationCaller OperationCaller { get; set; }
    public string OperationResult { get; set; }
    public int OperationStatus { get; set; }
    public OperationRequest OperationRequest { get; set; }
    public string OperationStartedTime { get; set; }
    public string OperationCompletedTime { get; set; }
}

public class RootObject
{
    public List<Operation> Operations { get; set; }
    public object ContinuationToken { get; set; }
}

then

RootObject obj = JsonConvert.DeserializeObject<RootObject>(jsonstring);
obj.Operations[0].OperationObjectID;
Damith
  • 62,401
  • 13
  • 102
  • 153
0

Try to use JavaScriptSerializer class: http://msdn.microsoft.com/ru-ru/library/system.web.script.serialization.javascriptserializer.aspx.

Qué Padre
  • 2,005
  • 3
  • 24
  • 39