[英]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"
}
}
For simplicity I reduct to only 3 elements, and in fact there are more than 100. I only want to extract the key names, which are "10000010.SH", "10000003.SH", "10000006.SH" and so on. 为简单起见,我只还原3个元素,实际上有100个以上。我只想提取键名,分别是“ 10000010.SH”,“ 10000003.SH”,“ 10000006.SH”,等等。 I deserialize it to an object type, but how to extract the string I want?
我将其反序列化为对象类型,但是如何提取所需的字符串?
Object result= JsonConvert.DeserializeObject(jsonstring);
Or is there any convenient way? 还是有什么方便的方法? Thanks!
谢谢!
var deser = new JavaScriptSerializer()
.Deserialize<Dictionary<string, Dictionary<string, string >>>(val);
var justDaily = deser["jsonstring"];
You can use Linq with Json.Net 您可以在Json.Net上使用Linq
var keys = JObject.Parse(jsonstring)
.Properties()
.Select(x => x.Name)
.ToList();
You can Deserialize it like this 您可以像这样反序列化
Dictionary<dynamic, NumberSH> ser = JsonConvert.DeserializeObject<Dictionary<dynamic, NumberSH>>(jsonstr);
foreach(var k in ser)
{
Console.WriteLine(k.Key);
}
The class structure would look like 类结构看起来像
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.