簡體   English   中英

使用json.net反序列化netsted json字符串

[英]Deserialize netsted json string with json.net

jsonstring = 
{
    "10000010.SH": {
        "TOTALTM": 45,
        "STARTDATE": "20150209",
        "UNDERLYINGWINDCODE": "510050.SH",
        "EXE_MODE": "call",
        "WIND_CODE": "10000010.SH",
        "LASTTRADINGDATE": "20150325",
        "EXE_ENDDATE": "20150325",
        "MAINT_MARGIN": null,
        "EXE_TYPE": "Euro",
        "US_TYPE": "ETF",
        "SETTLEMENTMETHOD": "asset",
        "US_NAME": "50ETF",
        "US_CODE": "510050"
    },
    "10000009.SH": {
        "TOTALTM": 45,
        "STARTDATE": "20150209",
        "UNDERLYINGWINDCODE": "510050.SH",
        "EXE_MODE": "call",
        "WIND_CODE": "10000009.SH",
        "LASTTRADINGDATE": "20150325",
        "EXE_ENDDATE": "20150325",
        "MAINT_MARGIN": null,
        "EXE_TYPE": "Euro",
        "US_TYPE": "ETF",
        "SETTLEMENTMETHOD": "asset",
        "US_NAME": "50ETF",
        "US_CODE": "510050"
    },
    "10000003.SH": {
        "TOTALTM": 45,
        "STARTDATE": "20150209",
        "UNDERLYINGWINDCODE": "510050.SH",
        "EXE_MODE": "call",
        "WIND_CODE": "10000003.SH",
        "LASTTRADINGDATE": "20150325",
        "EXE_ENDDATE": "20150325",
        "MAINT_MARGIN": null,
        "EXE_TYPE": "Euro",
        "US_TYPE": "ETF",
        "SETTLEMENTMETHOD": "asset",
        "US_NAME": "50ETF",
        "US_CODE": "510050"
    },
    "10000008.SH": {
        "TOTALTM": 45,
        "STARTDATE": "20150209",
        "UNDERLYINGWINDCODE": "510050.SH",
        "EXE_MODE": "call",
        "WIND_CODE": "10000008.SH",
        "LASTTRADINGDATE": "20150325",
        "EXE_ENDDATE": "20150325",
        "MAINT_MARGIN": null,
        "EXE_TYPE": "Euro",
        "US_TYPE": "ETF",
        "SETTLEMENTMETHOD": "asset",
        "US_NAME": "50ETF",
        "US_CODE": "510050"
    },
    "10000006.SH": {
        "TOTALTM": 45,
        "STARTDATE": "20150209",
        "UNDERLYINGWINDCODE": "510050.SH",
        "EXE_MODE": "call",
        "WIND_CODE": "10000006.SH",
        "LASTTRADINGDATE": "20150325",
        "EXE_ENDDATE": "20150325",
        "MAINT_MARGIN": null,
        "EXE_TYPE": "Euro",
        "US_TYPE": "ETF",
        "SETTLEMENTMETHOD": "asset",
        "US_NAME": "50ETF",
        "US_CODE": "510050"
    }
}

為簡單起見,我只還原3個元素,實際上有100個以上。我只想提取鍵名,分別是“ 10000010.SH”,“ 10000003.SH”,“ 10000006.SH”,等等。 我將其反序列化為對象類型,但是如何提取所需的字符串?

Object result= JsonConvert.DeserializeObject(jsonstring);

還是有什么方便的方法? 謝謝!

  var deser = new JavaScriptSerializer()
        .Deserialize<Dictionary<string, Dictionary<string, string >>>(val);
    var justDaily = deser["jsonstring"];

您可以在Json.Net上使用Linq

var keys = JObject.Parse(jsonstring)
            .Properties()
            .Select(x => x.Name)
            .ToList();

您可以像這樣反序列化

Dictionary<dynamic, NumberSH> ser = JsonConvert.DeserializeObject<Dictionary<dynamic, NumberSH>>(jsonstr);
foreach(var k in ser)
{
    Console.WriteLine(k.Key);
}

類結構看起來像

public class NumberSH
{

    [JsonProperty("TOTALTM")]
    public int TOTALTM { get; set; }

    [JsonProperty("STARTDATE")]
    public string STARTDATE { get; set; }

    [JsonProperty("UNDERLYINGWINDCODE")]
    public string UNDERLYINGWINDCODE { get; set; }

    [JsonProperty("EXE_MODE")]
    public string EXE_MODE { get; set; }

    [JsonProperty("WIND_CODE")]
    public string WIND_CODE { get; set; }

    [JsonProperty("LASTTRADINGDATE")]
    public string LASTTRADINGDATE { get; set; }

    [JsonProperty("EXE_ENDDATE")]
    public string EXE_ENDDATE { get; set; }

    [JsonProperty("MAINT_MARGIN")]
    public object MAINT_MARGIN { get; set; }

    [JsonProperty("EXE_TYPE")]
    public string EXE_TYPE { get; set; }

    [JsonProperty("US_TYPE")]
    public string US_TYPE { get; set; }

    [JsonProperty("SETTLEMENTMETHOD")]
    public string SETTLEMENTMETHOD { get; set; }

    [JsonProperty("US_NAME")]
    public string US_NAME { get; set; }

    [JsonProperty("US_CODE")]
    public string US_CODE { get; set; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM