gpt4 book ai didi

android - 改造POJO为空

转载 作者:行者123 更新时间:2023-11-29 01:37:35 25 4
gpt4 key购买 nike

谁能看出为什么我的 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();
}

主要 Activity

    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":"&nbsp;+++-+-&nbsp;","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

最佳答案

http://www.jsonschema2pojo.org/生成了以下(缩短的)POJOS,应该是可解析的:

public class ResultWrapper {
Query query;
(...)
}

public class Query {

private Integer count;
private String created;
private String lang;
private Results results;

(...)
}

public class Results {

// you might wanna make this an array in your json and a List here
private Quote quote;
(...)

}

public class Quote {

private String symbol;
private String Ask;
private String AverageDailyVolume;
private String Bid;
private String AskRealtime;
private String BidRealtime;
private String BookValue;
private String ChangePercentChange;
private String Change;
private Object Commission;
private String Currency;
private String ChangeRealtime;
private String AfterHoursChangeRealtime;
private String DividendShare;
private String LastTradeDate;
private Object TradeDate;
private String EarningsShare;
private Object ErrorIndicationreturnedforsymbolchangedinvalid;
private String EPSEstimateCurrentYear;
private String EPSEstimateNextYear;
private String EPSEstimateNextQuarter;
private String DaysLow;
private String DaysHigh;
private String YearLow;
private String YearHigh;
private String HoldingsGainPercent;
private Object AnnualizedGain;
private Object HoldingsGain;
private String HoldingsGainPercentRealtime;
private Object HoldingsGainRealtime;
private String MoreInfo;
private Object OrderBookRealtime;
private Object MarketCapitalization;
private Object MarketCapRealtime;
private String EBITDA;
private String ChangeFromYearLow;
private String PercentChangeFromYearLow;
private String LastTradeRealtimeWithTime;
private String ChangePercentRealtime;
private String ChangeFromYearHigh;
private String PercebtChangeFromYearHigh;
private String LastTradeWithTime;
private String LastTradePriceOnly;
private Object HighLimit;
private Object LowLimit;
private String DaysRange;
private String DaysRangeRealtime;
private String FiftydayMovingAverage;
private String TwoHundreddayMovingAverage;
private Object ChangeFromTwoHundreddayMovingAverage;
private Object PercentChangeFromTwoHundreddayMovingAverage;
private Object ChangeFromFiftydayMovingAverage;
private Object PercentChangeFromFiftydayMovingAverage;
private String Name;
private Object Notes;
private String Open;
private String PreviousClose;
private Object PricePaid;
private String ChangeinPercent;
private Object PriceSales;
private Object PriceBook;
private Object ExDividendDate;
private Object PERatio;
private Object DividendPayDate;
private Object PERatioRealtime;
private Object PEGRatio;
private Object PriceEPSEstimateCurrentYear;
private Object PriceEPSEstimateNextYear;
private String Symbol;
private Object SharesOwned;
private Object ShortRatio;
private String LastTradeTime;
private String TickerTrend;
private Object OneyrTargetPrice;
private String Volume;
private Object HoldingsValue;
private Object HoldingsValueRealtime;
private String YearRange;
private String DaysValueChange;
private String DaysValueChangeRealtime;
private String StockExchange;
private Object DividendYield;
private String PercentChange;

(...)
}

然后修改你的retrofit界面为

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=")
ResultWrapper listQuotes();
}

您现在可以通过以下方式访问报价:

ResultWrapper result = RetrofitInterface.getStockApiClient().listQuotes();
Quote q = q.getQuery().getResults().getQuote();

关于android - 改造POJO为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26972527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com