-1

次のような API 呼び出しの結果があります。

{"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 解析は形式を認識する必要がありますか?

ありがとう、アンドリュー

4

2 に答える 2

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;
于 2013-08-22T06:40:38.687 に答える
0

JavaScriptSerializerクラスを使用してみてください: http://msdn.microsoft.com/ru-ru/library/system.web.script.serialization.javascriptserializer.aspx

于 2013-08-22T06:25:13.250 に答える