【发布时间】:2015-01-14 08:31:36
【问题描述】:
谁能看到为什么我的s.getSymbol() 错误在这段代码中返回null?
json 可以正常打印到终端,并且在创建“引用”时没有运行时错误。
然而,试图访问它的成员会抛出一个空指针。
我需要在我的 POJO 中包含 JSON 的所有节点吗?例如,如果我只想要 Symbol,我是否可以只拥有该数据成员,只要它是 setter 和 getter?
谢谢
Retorfit Interface
public class RetrofitInterface {
private static StockApiInterface sStockService;
public static StockApiInterface getStockApiClient() {
if (sStockService == null) {
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("http://query.yahooapis.com/v1/public")
.setLogLevel(RestAdapter.LogLevel.FULL)
.build();
sStockService = restAdapter.create(StockApiInterface.class);
}
return sStockService;
}
public interface StockApiInterface {
@GET("/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20
(\"AIB.IR\")%0A%09%09&format=json&diagnostics=false&env=http%3A%2F%2Fdatatables.org%2Falltables.env&callback=")
quote listQuotes();
}
主活动
quote q = RetrofitInterface.getStockApiClient().listQuotes();
if(q.getSymbol()== null){
System.out.println("Null");
}
JSON
{"query":{"count":1,"created":"2014-11-17T11:06:28Z","lang":"en-US","results":{"quote":{"symbol":"AIB.IR","Ask":"0.105","AverageDailyVolume":"812179","Bid":"0.103","AskRealtime":"0.105","BidRealtime":"0.103","BookValue":"0.00","Change_PercentChange":"0.00 - 0.00%","Change":"0.00","Commission":null,"Currency":"EUR","ChangeRealtime":"0.00","AfterHoursChangeRealtime":"N/A - N/A","DividendShare":"0.00","LastTradeDate":"11/17/2014","TradeDate":null,"EarningsShare":"0.00","ErrorIndicationreturnedforsymbolchangedinvalid":null,"EPSEstimateCurrentYear":"0.00","EPSEstimateNextYear":"0.00","EPSEstimateNextQuarter":"0.00","DaysLow":"0.101","DaysHigh":"0.108","YearLow":"0.075","YearHigh":"0.166","HoldingsGainPercent":"- - -","AnnualizedGain":null,"HoldingsGain":null,"HoldingsGainPercentRealtime":"N/A - N/A","HoldingsGainRealtime":null,"MoreInfo":"n","OrderBookRealtime":null,"MarketCapitalization":null,"MarketCapRealtime":null,"EBITDA":"0","ChangeFromYearLow":"+0.028","PercentChangeFromYearLow":"+37.33%","LastTradeRealtimeWithTime":"N/A - <b><img src=http://eur.i1.yimg.com/eur.yimg.com/i/eu/f/e.gif width=11 height=13 border=0>0.103</b>","ChangePercentRealtime":"N/A - 0.00%","ChangeFromYearHigh":"-0.063","PercebtChangeFromYearHigh":"-37.95%","LastTradeWithTime":"5:40am - <b>0.103</b>","LastTradePriceOnly":"0.103","HighLimit":null,"LowLimit":null,"DaysRange":"0.101 - 0.108","DaysRangeRealtime":"N/A - N/A","FiftydayMovingAverage":"0.00","TwoHundreddayMovingAverage":"0.00","ChangeFromTwoHundreddayMovingAverage":null,"PercentChangeFromTwoHundreddayMovingAverage":null,"ChangeFromFiftydayMovingAverage":null,"PercentChangeFromFiftydayMovingAverage":null,"Name":"ALLIED IRISH BANK","Notes":null,"Open":"0.101","PreviousClose":"0.103","PricePaid":null,"ChangeinPercent":"0.00%","PriceSales":null,"PriceBook":null,"ExDividendDate":null,"PERatio":null,"DividendPayDate":null,"PERatioRealtime":null,"PEGRatio":null,"PriceEPSEstimateCurrentYear":null,"PriceEPSEstimateNextYear":null,"Symbol":"AIB.IR","SharesOwned":null,"ShortRatio":null,"LastTradeTime":"5:40am","TickerTrend":" +++-+- ","OneyrTargetPrice":null,"Volume":"228977","HoldingsValue":null,"HoldingsValueRealtime":null,"YearRange":"0.075 - 0.166","DaysValueChange":"- - 0.00%","DaysValueChangeRealtime":"N/A - N/A","StockExchange":"Irish","DividendYield":null,"PercentChange":"0.00%"}}}}
POJO
public class quote {
@Expose
private String symbol;
@Expose
private String Ask;
@Expose
private String AverageDailyVolume;
@Expose
private String Bid;
@Expose
private String AskRealtime;
.....
//includes all elements and setters and getter
【问题讨论】:
-
为什么要使用@Expose 注解?
标签: android json pojo retrofit