[英]Deserializing json using asp.net libraries
我目前正在嘗試反序列化 silverlight 中的以下 JSON output 沒有 ZDE9B9ED70D7E2E1ZEFFEEF2Z1。 我聽說有一種方法可以使用 JsonArray 和 LINQ 來做到這一點,但我不太明白。
{
"Security": {
"CIK": "0000789019",
"Cusip": "594918104",
"Symbol": "MSFT",
"ISIN": "US5949181045",
"Valoren": "951692",
"Name": "Microsoft Corporation",
"Market": "NASDAQGS",
"CategoryOrIndustry": "TECHNOLOGY",
"Outcome": "Success",
"Message": null,
"Identity": null,
"Delay": 0
},
"StartDate": "7/1/2011",
"EndDate": "7/6/2011",
"Quotes": [{
"Date": "7/5/2011",
"Last": 26.03,
"Open": 26.1,
"LastClose": 26.02,
"High": 26.15,
"Low": 25.9,
"ChangeFromOpen": -0.07,
"PercentChangeFromOpen": -0.268,
"ChangeFromLastClose": 0.01,
"PercentChangeFromLastClose": 0.038,
"Volume": 37803000,
"SplitRatio": 1,
"LastAdjusted": 26.03,
"OpenAdjusted": 26.1,
"LastCloseAdjusted": 26.02,
"HighAdjusted": 26.15,
"LowAdjusted": 25.9,
"ChangeFromOpenAdjusted": -0.07,
"ChangeFromLastCloseAdjusted": 0.01,
"VolumeAdjusted": 37803000,
"NotTraded": false,
"Outcome": "Success",
"Message": null,
"Identity": null,
"Delay": 0
}, {
"Date": "7/1/2011",
"Last": 26.02,
"Open": 25.93,
"LastClose": 26,
"High": 26.17,
"Low": 25.84,
"ChangeFromOpen": 0.09,
"PercentChangeFromOpen": 0.347,
"ChangeFromLastClose": 0.02,
"PercentChangeFromLastClose": 0.077,
"Volume": 52914500,
"SplitRatio": 1,
"LastAdjusted": 26.02,
"OpenAdjusted": 25.93,
"LastCloseAdjusted": 26,
"HighAdjusted": 26.17,
"LowAdjusted": 25.84,
"ChangeFromOpenAdjusted": 0.09,
"ChangeFromLastCloseAdjusted": 0.02,
"VolumeAdjusted": 52914500,
"NotTraded": false,
"Outcome": "Success",
"Message": null,
"Identity": null,
"Delay": 0
}],
"Outcome": "Success",
"Message": null,
"Identity": "Cookie",
"Delay": 0.014001
}
在我試圖從Quotes
數組中提取Date
和LastAdjusted
並將每個放入自己的 arrays 的情況下,執行此類操作的最佳方法是什么?
這是我將 json 放入 stream 的過程:
downloader.OpenReadCompleted += new OpenReadCompletedEventHandler(downloader_OpenReadCompleted);
downloader.OpenReadAsync(serviceUri);
}
void downloader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if (e.Error == null)
{
Stream responseStream = e.Result;
//add code here
}
}
Silverlight 的以下代碼將采用 JSON 字符串,將其反序列化為“列表”object,然后遍歷列表的引號列表以提取日期和 LastAdjusted。 確保向您的項目添加對 System.ServiceModel.Web 的引用,以便訪問DataContractJsonSerializer (MSDN) class。
C#
string json = // Your JSON string
Listing myListing = DeserializeJSON(json);
foreach (Quote quote in listing.Quotes)
{
DateTime dt = quote.Date;
Double lastAdjusted = quote.LastAdjusted;
}
public Listing DeserializeJSON(string json)
{
using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Listing));
return (Listing)serializer.ReadObject(ms);
}
}
課程
public class Listing
{
public Security Security { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public List<Quote> Quotes { get; set; }
}
public class Security
{
public string CIK {get; set;}
public string Cusip {get; set;}
public string Symbol {get; set;}
public string ISIN {get; set;}
public string Valoren {get; set;}
public string Name {get; set;}
public string Market {get; set;}
public string CategoryOrIndustry {get; set;}
public string Outcome {get; set;}
public string Message {get; set;}
public string Identity {get; set;}
public string Delay { get; set; }
}
public class Quote
{
public DateTime Date { get; set; }
public Double Last { get; set; }
public Double Open { get; set; }
public Double LastClose { get; set; }
public Double High { get; set; }
public Double Low { get; set; }
public Double ChangeFromOpen { get; set; }
public Double PercentChangeFromOpen { get; set; }
public Double ChangeFromLastClose { get; set; }
public Double PercentChangeFromLastClose { get; set; }
public Double Volume { get; set; }
public Double SplitRatio { get; set; }
public Double LastAdjusted { get; set; }
public Double OpenAdjusted { get; set; }
public Double LastCloseAdjusted { get; set; }
public Double HighAdjusted { get; set; }
public Double LowAdjusted { get; set; }
public Double ChangeFromOpenAdjusted { get; set; }
public Double ChangeFromLastCloseAdjusted { get; set; }
public Double VolumeAintdjusted { get; set; }
public bool NotTraded { get; set; }
public string Outcome { get; set; }
public string Message { get; set; }
public string Identity { get; set; }
public int Delay { get; set; }
}
您可以在此處了解更多信息: Silverlight 中的 JSON 序列化和反序列化
使用 Newtonsoft Json.net 庫通過您的 JSON 構建字典。 然后使用 LINQ。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.