Reputation: 11
How can i deserialize the following JSON into a Collection of quote elements which i can bind to a repeater?
{ "query":{ "count":3, "created":"2012-06-27T19:44:47Z", "lang":"en-US", "results":{ "quote":[ { "symbol":"UAM", "Ask":null, "AverageDailyVolume":"262683", "Bid":null, "AskRealtime":"10.07", "BidRealtime":"10.06", "BookValue":"12.468", "Change_PercentChange":"-0.24 - -2.33%", "Change":"-0.24", "Commission":null, "ChangeRealtime":"-0.24", "AfterHoursChangeRealtime":"N/A - N/A", "DividendShare":"0.00", "LastTradeDate":"6/27/2012", "TradeDate":null, "EarningsShare":"0.096", "ErrorIndicationreturnedforsymbolchangedinvalid":null, "EPSEstimateCurrentYear":"0.68", "EPSEstimateNextYear":"0.77", "EPSEstimateNextQuarter":"0.16", "DaysLow":"10.06", "DaysHigh":"10.33", "YearLow":"8.79", "YearHigh":"13.62", "HoldingsGainPercent":"- - -", "AnnualizedGain":null, "HoldingsGain":null, "HoldingsGainPercentRealtime":"N/A - N/A", "HoldingsGainRealtime":null, "MoreInfo":"cnpriIed", "OrderBookRealtime":null, "MarketCapitalization":"860.4M", "MarketCapRealtime":null, "EBITDA":"105.7M", "ChangeFromYearLow":"+1.27", "PercentChangeFromYearLow":"+14.45%", "LastTradeRealtimeWithTime":"N/A - 10.06", "ChangePercentRealtime":"N/A - -2.33%", "ChangeFromYearHigh":"-3.56", "PercebtChangeFromYearHigh":"-26.14%", "LastTradeWithTime":"3:29pm - 10.06", "LastTradePriceOnly":"10.06", "HighLimit":null, "LowLimit":null, "DaysRange":"10.06 - 10.33", "DaysRangeRealtime":"N/A - N/A", "FiftydayMovingAverage":"10.0519", "TwoHundreddayMovingAverage":"10.8884", "ChangeFromTwoHundreddayMovingAverage":"-0.8284", "PercentChangeFromTwoHundreddayMovingAverage":"-7.61%", "ChangeFromFiftydayMovingAverage":"+0.0081", "PercentChangeFromFiftydayMovingAverage":"+0.08%", "Name":"Universal America", "Notes":null, "Open":"10.32", "PreviousClose":"10.30", "PricePaid":null, "ChangeinPercent":"-2.33%", "PriceSales":"0.40", "PriceBook":"0.83", "ExDividendDate":null, "PERatio":"107.29", "DividendPayDate":"19-Aug-10", "PERatioRealtime":null, "PEGRatio":"1.01", "PriceEPSEstimateCurrentYear":"15.15", "PriceEPSEstimateNextYear":"13.38", "Symbol":"UAM", "SharesOwned":null, "ShortRatio":"4.80", "LastTradeTime":"3:29pm", "TickerTrend":" -==++- ", "OneyrTargetPrice":"12.00", "Volume":"491440", "HoldingsValue":null, "HoldingsValueRealtime":null, "YearRange":"8.79 - 13.62", "DaysValueChange":"- - -2.33%", "DaysValueChangeRealtime":"N/A - N/A", "StockExchange":"NYSE", "DividendYield":null, "PercentChange":"-2.33%" }, { "symbol":"WCG", "Ask":null, "AverageDailyVolume":"898853", "Bid":null, "AskRealtime":"49.72", "BidRealtime":"49.68", "BookValue":"27.418", "Change_PercentChange":"-0.25 - -0.50%", "Change":"-0.25", "Commission":null, "ChangeRealtime":"-0.25", "AfterHoursChangeRealtime":"N/A - N/A", "DividendShare":"0.00", "LastTradeDate":"6/27/2012", "TradeDate":null, "EarningsShare":"6.77", "ErrorIndicationreturnedforsymbolchangedinvalid":null, "EPSEstimateCurrentYear":"5.42", "EPSEstimateNextYear":"5.20", "EPSEstimateNextQuarter":"1.51", "DaysLow":"49.64", "DaysHigh":"50.765", "YearLow":"33.29", "YearHigh":"74.41", "HoldingsGainPercent":"- - -", "AnnualizedGain":null, "HoldingsGain":null, "HoldingsGainPercentRealtime":"N/A - N/A", "HoldingsGainRealtime":null, "MoreInfo":"cnprmiIed", "OrderBookRealtime":null, "MarketCapitalization":"2.141B", "MarketCapRealtime":null, "EBITDA":"475.0M", "ChangeFromYearLow":"+16.39", "PercentChangeFromYearLow":"+49.23%", "LastTradeRealtimeWithTime":"N/A - 49.68", "ChangePercentRealtime":"N/A - -0.50%", "ChangeFromYearHigh":"-24.73", "PercebtChangeFromYearHigh":"-33.23%", "LastTradeWithTime":"3:29pm - 49.68", "LastTradePriceOnly":"49.68", "HighLimit":null, "LowLimit":null, "DaysRange":"49.64 - 50.765", "DaysRangeRealtime":"N/A - N/A", "FiftydayMovingAverage":"55.0451", "TwoHundreddayMovingAverage":"60.745", "ChangeFromTwoHundreddayMovingAverage":"-11.065", "PercentChangeFromTwoHundreddayMovingAverage":"-18.22%", "ChangeFromFiftydayMovingAverage":"-5.3651", "PercentChangeFromFiftydayMovingAverage":"-9.75%", "Name":"Wellcare Health P", "Notes":null, "Open":"49.75", "PreviousClose":"49.93", "PricePaid":null, "ChangeinPercent":"-0.50%", "PriceSales":"0.33", "PriceBook":"1.82", "ExDividendDate":null, "PERatio":"7.38", "DividendPayDate":null, "PERatioRealtime":null, "PEGRatio":"0.58", "PriceEPSEstimateCurrentYear":"9.21", "PriceEPSEstimateNextYear":"9.60", "Symbol":"WCG", "SharesOwned":null, "ShortRatio":"1.70", "LastTradeTime":"3:29pm", "TickerTrend":" =--==- ", "OneyrTargetPrice":"73.10", "Volume":"517119", "HoldingsValue":null, "HoldingsValueRealtime":null, "YearRange":"33.29 - 74.41", "DaysValueChange":"- - -0.50%", "DaysValueChangeRealtime":"N/A - N/A", "StockExchange":"NYSE", "DividendYield":null, "PercentChange":"-0.50%" }, { "symbol":"WLP", "Ask":null, "AverageDailyVolume":"2976430", "Bid":null, "AskRealtime":"69.70", "BidRealtime":"69.67", "BookValue":"70.91", "Change_PercentChange":"+0.58 - +0.84%", "Change":"+0.58", "Commission":null, "ChangeRealtime":"+0.58", "AfterHoursChangeRealtime":"N/A - N/A", "DividendShare":"1.076", "LastTradeDate":"6/27/2012", "TradeDate":null, "EarningsShare":"7.265", "ErrorIndicationreturnedforsymbolchangedinvalid":null, "EPSEstimateCurrentYear":"7.78", "EPSEstimateNextYear":"8.54", "EPSEstimateNextQuarter":"2.02", "DaysLow":"69.22", "DaysHigh":"70.65", "YearLow":"56.61", "YearHigh":"80.90", "HoldingsGainPercent":"- - -", "AnnualizedGain":null, "HoldingsGain":null, "HoldingsGainPercentRealtime":"N/A - N/A", "HoldingsGainRealtime":null, "MoreInfo":"cnprmiIed", "OrderBookRealtime":null, "MarketCapitalization":"23.052B", "MarketCapRealtime":null, "EBITDA":"4.991B", "ChangeFromYearLow":"+13.07", "PercentChangeFromYearLow":"+23.09%", "LastTradeRealtimeWithTime":"N/A - 69.68", "ChangePercentRealtime":"N/A - +0.84%", "ChangeFromYearHigh":"-11.22", "PercebtChangeFromYearHigh":"-13.87%", "LastTradeWithTime":"3:29pm - 69.68", "LastTradePriceOnly":"69.68", "HighLimit":null, "LowLimit":null, "DaysRange":"69.22 - 70.65", "DaysRangeRealtime":"N/A - N/A", "FiftydayMovingAverage":"67.8471", "TwoHundreddayMovingAverage":"67.6942", "ChangeFromTwoHundreddayMovingAverage":"+1.9858", "PercentChangeFromTwoHundreddayMovingAverage":"+2.93%", "ChangeFromFiftydayMovingAverage":"+1.8329", "PercentChangeFromFiftydayMovingAverage":"+2.70%", "Name":"WellPoint, Inc. C", "Notes":null, "Open":"69.40", "PreviousClose":"69.10", "PricePaid":null, "ChangeinPercent":"+0.84%", "PriceSales":"0.37", "PriceBook":"0.97", "ExDividendDate":"Jun 6", "PERatio":"9.51", "DividendPayDate":"Jun 25", "PERatioRealtime":null, "PEGRatio":"0.88", "PriceEPSEstimateCurrentYear":"8.88", "PriceEPSEstimateNextYear":"8.09", "Symbol":"WLP", "SharesOwned":null, "ShortRatio":"2.90", "LastTradeTime":"3:29pm", "TickerTrend":" ==-=== ", "OneyrTargetPrice":"82.89", "Volume":"3187310", "HoldingsValue":null, "HoldingsValueRealtime":null, "YearRange":"56.61 - 80.90", "DaysValueChange":"- - +0.84%", "DaysValueChangeRealtime":"N/A - N/A", "StockExchange":"NYSE", "DividendYield":"1.56", "PercentChange":"+0.84%" } ] } } }
I am using C# and can't figure out how to construct the class structure to get a List of Quote object extracted. Here's what I tried:
public class Container { [JsonProperty("query")] public Query Data { get; set; } } public class Query { [JsonProperty("count")] public int Count { get; set; } [JsonProperty("created")] public DateTime Created { get; set; } [JsonProperty("lang")] public string Lang { get; set; } [JsonProperty("results")] public List Results { get; set; } } public class Quote { [JsonProperty("symbol")] public string Symbol { get; set; } [JsonProperty("Ask")] public string Ask { get; set; } [JsonProperty("AverageDailyVolume")] public string AverageDailyVolume { get; set; } }
Upvotes: 0
Views: 282
Reputation: 1841
Don't know if this will help you now but your problem is your json doesn't conform to you object model. To deserialise back to a Container object with a Query object that contains a List of results your results json should look like the following:
"results": [
{
"symbol": "UAM",
"Ask": null,
"AverageDailyVolume": "262683"
},
{
"symbol": "WCG",
"Ask": null,
"AverageDailyVolume": "898853"
},
{
"symbol": "WLP",
"Ask": null,
"AverageDailyVolume": "2976430"
}
]
But your json looks like this:
"results":{
"quote":[
{
"symbol":"UAM",
"Ask":null,
"AverageDailyVolume":"262683",
}
]
}
The "quote" property is what is messing it up. So in order to map this you either have to change the source json or implement some kind of custom list that has a property "quote"....OR you deserialise it manually. But natively json will expext an object as
{
...Some object
}
and not:
"myobject" : {
...Some object.
}
when inside a collection.
Upvotes: 1