2012-06-27 57 views
0

如何反序列化下面的JSON到可以綁定到中繼器的引用元素的集合?使用Json.NET反序列化

 

    { 
     "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%" 
       } 
      ] 
      } 
     } 
    } 

我使用C#和無法弄清楚如何構造類結構得到提取對象報價的列表。這是我的嘗試:

 
    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; } 
    } 
+0

我更新了最初的問題以包含詳細信息。試圖找出如何使用JsonConvert.DeserializeObject獲取Quote列表對象列表(res).Data; –

+0

你遇到什麼錯誤?另外,應該不需要'Container'類。 –

回答

1

不知道這會幫助你,但你的問題是你的JSON不符合你的對象模型。要deserialise返回與查詢對象的容器對象,它包含一個結果列表的結果JSON應如下所示:

"results": [ 
    { 
    "symbol": "UAM", 
    "Ask": null, 
    "AverageDailyVolume": "262683" 
    }, 
    { 
    "symbol": "WCG", 
    "Ask": null, 
    "AverageDailyVolume": "898853" 
    }, 
    { 
    "symbol": "WLP", 
    "Ask": null, 
    "AverageDailyVolume": "2976430" 
    } 
] 

但你的JSON看起來是這樣的:

"results":{ 
     "quote":[ 
      { 
       "symbol":"UAM", 
       "Ask":null, 
       "AverageDailyVolume":"262683", 
      } 
      ] 
} 

「報價「屬性是搞砸了。所以爲了映射這個,你必須改變源json或者實現某種具有屬性「quote」的自定義列表....或者你手動對它進行反序列化。集合內部時

"myobject" : { 
    ...Some object. 
} 

:因爲它本身就JSON將expext一個對象作爲

{ 
    ...Some object 
} 

不能及的。