2017-01-11 63 views
0
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「等。 我反序列化它的對象類型,但如何提取我想要的字符串?反序列化netsted JSON字符串json.net

Object result= JsonConvert.DeserializeObject(jsonstring);

或有任何方便的方法?謝謝!

+0

嘿@herbert看看我提供的解決方案,並確認是否可以幫助您。 :) –

回答

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

這段代碼可以提取所有的密鑰嗎?鑰匙是不同的... – herbert

+0

是的,但你需要糾正物體的類型 –

0

您可以使用LINQ與Json.Net

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

你可以反序列化這樣

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; } 
}