4

私は次のjsonを持っています:

{   
    "serverTime": "2013-08-12 02:45:55,558",
    "data": [
        {
            "key1": 1,
            "key2": {},
            "key3": {
                "key4": [
                    ""
                ],
                "key5": "test2"
            },
            "key7": 0
        },
        {
            "key8": 1,
            "key9": {},
            "key10": {
                "key4": [
                    ""
                ],
                "key9": "test2"
            },
            "key11": 0
        }
    ] 

}

キーと値のペアとして値を取得したい。何かのようなもの:

jsonObject[data][0]

データ配列の最初の項目を指定する必要があります。

JSONFx.net を使用しています。しかし、それは強く型付けされたオブジェクトを提供します。私はそれを望んでいません。前述のように、JSON をキー値として解析する方法はありますか?

ありがとう

4

4 に答える 4

6

これを試して:

using System;
using System.IO;
using Newtonsoft.Json;

class Program
{
    static void Main(string[] args)
    {
        var json = File.ReadAllText("input.txt");
        var a = new { serverTime = "", data = new object[] { } };
        var c = new JsonSerializer();
        dynamic jsonObject = c.Deserialize(new StringReader(json), a.GetType());
        Console.WriteLine(jsonObject.data[0]);
    }
}
于 2013-08-12T12:48:19.890 に答える
3

Json.NETの使用に抵抗がない場合は、次のようにすることができます。

var jsonString = @"
{   
    ""serverTime"": ""2013-08-12 02:45:55,558"",
    ""data"": [
        {
            ""key1"": 1,
            ""key2"": {},
            ""key3"": {
                ""key4"": [
                    """"
                ],
                ""key5"": ""test2""
            },
            ""key7"": 0
        },
        {
            ""key8"": 1,
            ""key9"": {},
            ""key10"": {
                ""key4"": [
                    """"
                ],
                ""key9"": ""test2""
            },
            ""key11"": 0
        }
    ] 
}";

var jsonResult = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(jsonString);
var firstItem = jsonResult["data"][0];

firstItem配列の最初の項目のdata配列になります。

デモ結果

お役に立てれば。

于 2013-08-12T12:36:21.683 に答える
1

サードパーティのライブラリなしでこれを行いたい場合は、次のようにします。

次のコードを使用します。

var deserializer = new JavaScriptSerializer();
var someObject = deserializer.DeserializeObject(json);

string serverTime = someObject["serverTime"].ToString();
Dictionary<string, int> data = someObject["data"] as Dictionary<string, int>;

試してごらん。

編集:最後の行を次のように変更する必要がある場合があります。

Dictionary<string, int?> data = someObject["data"] as Dictionary<string, int?>;
于 2013-08-12T12:45:45.853 に答える