2013-08-22 4 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 знать формат?

Спасибо, Andrew

+0

Что подразумевается под JSON "Custom"? –

+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; 
Смежные вопросы