3

次のjson文字列があります

{
    "serverTime": "2013-08-12 02:45:55,558",
    "data": [{
        "key1": 1,
        "result": {
            "sample1": [""],
            "sample2": "test2"
        }
    },{
        "key1": 1,
        "result": {
            "sample3": [""],
            "sample4": "test2"
        }
    }]
}

JSONTOC の使用#

以下のクラスが生成されます。

public class Result 
{
    public List<string> sample1 { get; set; }
    public string sample2 { get; set; }
    public List<string> sample3 { get; set; }
    public string sample4 { get; set; } 
} 

public class Datum 
{
    public int key1 { get; set; }
    public Result result { get; set; } 
}

public class RootObject 
{
    public string serverTime { get; set; }
    public List<Datum> data { get; set; } 
}

ご覧のとおり、ツールは可能なすべてのプロパティを持つResultクラスを生成しました。

私はjsonを解析するためのアプローチに従うことを試みています

public class Response<T>
{
    public Date serverTime;
    public ResponseData<T>[] data;
}

public class ResponseDataBase
{
    public int key1;
}

public class ResponseData<T> : ResponseDataBase
{
    public T result;
}

ここでTは 2 つのクラスに従うことができます

Class Result1
{
   public List<string> sample1 { get; set; }
   public string sample2 { get; set; }
}

Class Result2
{
    public List<string> sample3 { get; set; }
    public string sample4 { get; set; }
}

これらのクラス宣言を参照として持っていますが、クラス定義はまったく異なる場合があります。

** Result 型を指定してこの json を解析するにはどうすればよいですか。** オブジェクトに逆シリアル化するために JSONFx.net を使用しています。

ありがとう

4

1 に答える 1

0

JSON データから生成されたクラス:

public class Result
{
    public List<string> sample1 { get; set; }
    public string sample2 { get; set; }
}

public class Datum
{
    public int key { get; set; }
    public Result result { get; set; }
}

    public class RootObject
    {
    public string serverTime { get; set; }
    public List<Datum> data { get; set; }
}

ユーザー Newtonsoft.Json dll を使用して、次のような JSON データを逆シリアル化します。

var obj = JsonConvert.DeserializeObject<RootObject>("yourjsonstring");

次に、obj のプロパティを次のように使用できます。

var date = DateTime.Parse(obj.serverTime);

等々。

于 2013-09-03T10:17:51.087 に答える