2013-08-22 85 views
-1

我有一个API调用,它看起来像的结果:自定义JSON,转换为对象

{"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} 

理想我想将它转换为对象,所以我可以做的东西,如:

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

有人知道这是怎么完成的吗? JSON解析是否需要知道格式?

感谢, 安德鲁

+0

什么是 “自定义” JSON是什么意思? –

+1

请看看这个StackOverflow的答案: [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

+1

使用[json.net](http://james.newtonking的.com /项目/ JSON-net.aspx) –

回答

1

您可以使用Json.Net如下

dynamic object = JObject.Parse(yorjsonstring); 

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

,而不是使用动态对象,你可以为您的JSON类和序列化到这些类像下面。 你可以得到的http://json2csharp.com/网站帮助生成类

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; } 
} 

然后

RootObject obj = JsonConvert.DeserializeObject<RootObject>(jsonstring); 
obj.Operations[0].OperationObjectID;