2017-01-11 2 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" 
    } 
} 

Для простоты я REDUCT только 3 элементов, а на самом деле есть более чем 100. Я только хочу, чтобы извлечь ключевые имена, которые являются «10000010.SH», " 10000003.SH "," 10000006.SH "и так далее. Я десериализую его до типа объекта, но как извлечь строку, которую я хочу?Deserialize 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

Вы можете Deserialize его как этот

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; } 
} 
Смежные вопросы