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

Der Einfachheit halber ich nur drei Elemente reduct, und in der Tat gibt es mehr als 100. Ich möchte nur die Schlüsselnamen extrahieren, die „10000010.SH“ sind " 10000003.SH "," 10000006.SH "und so weiter. Ich deserialize es zu einem Objekttyp, aber wie man die Zeichenkette extrahiert, die ich will?Deserialize netsted JSON-String mit json.net

Object result= JsonConvert.DeserializeObject(jsonstring);

Oder gibt es eine bequeme Möglichkeit? Vielen Dank!

+0

Hey @herbert Schau dir die von mir angebotene Lösung an und bestätige, ob dir das hilft. :) –

Antwort

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

Kann dieses Snippet alle Schlüssel extrahieren? Die Tasten sind unterschiedlich ... – herbert

+0

Ja, aber Sie müssen die Art der Objekte korrigieren –

0

können Sie verwenden Linq mit Json.Net

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

Sie können es wie Deserialize dieser

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

Die Klassenstruktur wie

aussehen würde
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; } 
} 
Verwandte Themen