Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JSONObject not a String Error

Tags:

java

json

    {
  "query": {
    "count": 1,
    "created": "2015-07-28T05:19:01Z",
    "lang": "en-US",
    "results": {
      "quote": {
        "symbol": "GITANJALI.NS",
        "Ask": null,
        "AverageDailyVolume": null,
        "Bid": null,
        "AskRealtime": null,
        "BidRealtime": null,
        "BookValue": null,
        "Change_PercentChange": null,
        "Change": null,
        "Commission": null,
        "Currency": null,
        "ChangeRealtime": null,
        "AfterHoursChangeRealtime": null,
        "DividendShare": null,
        "LastTradeDate": null,
        "TradeDate": null,
        "EarningsShare": "9.73",
        "ErrorIndicationreturnedforsymbolchangedinvalid": null,
        "EPSEstimateCurrentYear": null,
        "EPSEstimateNextYear": null,
        "EPSEstimateNextQuarter": null,
        "DaysLow": null,
        "DaysHigh": null,
        "YearLow": null,
        "YearHigh": null,
        "HoldingsGainPercent": null,
        "AnnualizedGain": null,
        "HoldingsGain": null,
        "HoldingsGainPercentRealtime": null,
        "HoldingsGainRealtime": null,
        "MoreInfo": null,
        "OrderBookRealtime": null,
        "MarketCapitalization": null,
        "MarketCapRealtime": null,
        "EBITDA": null,
        "ChangeFromYearLow": null,
        "PercentChangeFromYearLow": null,
        "LastTradeRealtimeWithTime": null,
        "ChangePercentRealtime": null,
        "ChangeFromYearHigh": null,
        "PercebtChangeFromYearHigh": null,
        "LastTradeWithTime": null,
        "LastTradePriceOnly": null,
        "HighLimit": null,
        "LowLimit": null,
        "DaysRange": null,
        "DaysRangeRealtime": null,
        "FiftydayMovingAverage": null,
        "TwoHundreddayMovingAverage": null,
        "ChangeFromTwoHundreddayMovingAverage": null,
        "PercentChangeFromTwoHundreddayMovingAverage": null,
        "ChangeFromFiftydayMovingAverage": null,
        "PercentChangeFromFiftydayMovingAverage": null,
        "Name": null,
        "Notes": null,
        "Open": null,
        "PreviousClose": null,
        "PricePaid": null,
        "ChangeinPercent": null,
        "PriceSales": null,
        "PriceBook": null,
        "ExDividendDate": null,
        "PERatio": null,
        "DividendPayDate": null,
        "PERatioRealtime": null,
        "PEGRatio": null,
        "PriceEPSEstimateCurrentYear": null,
        "PriceEPSEstimateNextYear": null,
        "Symbol": "GITANJALI.NS",
        "SharesOwned": null,
        "ShortRatio": null,
        "LastTradeTime": null,
        "TickerTrend": null,
        "OneyrTargetPrice": null,
        "Volume": null,
        "HoldingsValue": null,
        "HoldingsValueRealtime": null,
        "YearRange": null,
        "DaysValueChange": null,
        "DaysValueChangeRealtime": null,
        "StockExchange": null,
        "DividendYield": null,
        "PercentChange": null
      }
    }
  }
}

This is the Json I'm getting and I'm trying to get MarketCapitalization out of this using:

import org.json.JSONArray;
import org.json.JSONObject;

by doing following operation:

String marketCap = obj.getJSONObject("query").getJSONObject("results")
                .getJSONObject("quote").getString("MarketCapitalization");

but I'm getting following error

org.json.JSONException: JSONObject["MarketCapitalization"] not a string.
    at org.json.JSONObject.getString(JSONObject.java:658)
    at com.mobileforce.YahooClient.prepareReadCompany(YahooClient.java:136)
    at com.mobileforce.YahooClient.read(YahooClient.java:82)
    at com.mobileforce.YahooClient.handleApi(YahooClient.java:42)
    at com.mobileforce.YahooServlet.doPost(YahooServlet.java:44)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

Note: If in case MarketCapitalization has some value then the above is working completely fine. The problem is occurring only when it is null

like image 446
sandeepvarma penmetsa Avatar asked Nov 15 '25 17:11

sandeepvarma penmetsa


1 Answers

Use optString() to get the value if it exists otherwise null or a default value you defined:

.optString("MarketCapitalization", "defaultValue");

See documentation


Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!