java - Why am I now getting a cannot resolve method length error after using a fix according to a stackoverflow post(embedded)? -


i working on project while , got stuck getting strange cannot cast exception. found asnwer here on post java.lang.classcastexception: org.json.simple.jsonarray cannot cast org.json.jsonarray when did suggesting , change import statement have 2 new errors pop up.

they error:(90, 39) error: cannot find symbol method getjsonobject(int) error:(89, 29) error: cannot find symbol method length()

here code mainactivity

import android.r; import android.app.activity; import android.location.location; import android.os.bundle; import android.util.log;  import com.google.android.gms.common.api.googleapiclient; import com.google.android.gms.location.locationservices; import com.squareup.okhttp.call; import com.squareup.okhttp.callback; import com.squareup.okhttp.okhttpclient; import com.squareup.okhttp.request; import com.squareup.okhttp.response; import org.json.simple.jsonarray; import org.json.jsonexception; import org.json.jsonobject;  import java.io.ioexception; import java.util.arraylist; import java.util.list;  import butterknife.butterknife;   public class mainactivity extends activity implements googleapiclient.connectioncallbacks {     public static final string tag = mainactivity.class.getsimplename();     private radiodata mradiodata;      private googleapiclient mgoogleapiclient;     private location mlastlocation;       @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.list_content);         butterknife.bind(this);          location locationuserlatitude = mlastlocation;         location locationuserlongitude = mlastlocation;         location latitudestation;         location longitudestation;         radiodata mradiodata = new radiodata();          okhttpclient client = new okhttpclient();         string radiofinderurl = "http://dredaycreative.com/json/radiodata.json";         request request = new request.builder()                 .url(radiofinderurl)                 .build();         call call = client.newcall(request);         call.enqueue(new callback() {             @override             public void onfailure(request request, ioexception e) {             }              @override             public void onresponse(response response) throws ioexception {                 try {                     string jsondata = response.body().string();                     log.v(tag, jsondata);                     if (response.issuccessful()) {                         getcurrentradiodata();                     }                  } catch (ioexception e) {                     log.e(tag, "exception caught: ", e);                 } catch (jsonexception e) {                     log.e(tag, "exception caught:", e);                 }             }          });       }       private list getcurrentradiodata() throws jsonexception{         list radiodata = new arraylist<string>();         list localradiodata = new arraylist();         object obj=jsonvalue.parse(string.valueof(radiodata));         jsonarray data;         data = (jsonarray)obj;         float[] results = new float[3];         double latitudestation = 0;         double longitudestation = 0;         (int i=0; i<data.length(); i++) {             jsonobject jasonobj = data.getjsonobject(i);             double latitudestations = jasonobj.getdouble("field21");             radiodata.add(latitudestations);             double longitudestations = jasonobj.getdouble("field24");             radiodata.add(longitudestations);             location.distancebetween(mlastlocation.getlatitude(), mlastlocation.getlongitude(), latitudestation, longitudestation, results);             float distance = results[0];             distance = math.round(distance);              if ((distance) > 350) {                 jsonobject callsign = jasonobj.getjsonobject("field1");                 localradiodata.add(callsign);                 jsonobject frequency = jasonobj.getjsonobject("field2");                 localradiodata.add(frequency);             } else {             radiodata.add(getcurrentradiodata());              }           }          return localradiodata;     }        private void updatedisplay() {      }       protected synchronized void buildgoogleapiclient() {         mgoogleapiclient = new googleapiclient.builder(this)                 .addconnectioncallbacks(this)                 .addonconnectionfailedlistener((googleapiclient.onconnectionfailedlistener) this)                 .addapi(locationservices.api)                 .build();       }       @override     public void onconnected(bundle bundle) {         mlastlocation = locationservices.fusedlocationapi.getlastlocation(                 mgoogleapiclient);         if (mlastlocation != null) {           //  mlatitudelabel.settext(string.valueof(mlastlocation.getlatitude()+ ""));            // mlongitudelabel.settext(string.valueof(mlastlocation.getlongitude()+""));         }     }       @override     public void onconnectionsuspended(int i) {      }   } 

my radiodata.java

  /**      * created andreas on 8/10/2015.      */     public class radiodata {     public string getcallsign() {         return mcallsign;     }      public void setcallsign(string callsign) {         mcallsign = callsign;     }      public double getfrequency() {         return mfrequency;     }      public void setfrequency(double frequency) {         mfrequency = frequency;     }      public int getchannel() {         return mchannel;     }      public void setchannel(int channel) {         mchannel = channel;     }      public double getlatitude() {         return mlatitude;     }      public void setlatitude(double latitude) {         mlatitude = latitude;     }      public double getlongitude() {         return mlongitude;     }      public void setlongitude(double longitude) {         mlongitude = longitude;     }      private string mcallsign;     private double mfrequency;     private int mchannel;     private double mlatitude;     private double mlongitude;    } 

activity main xml

    <relativelayout xmlns:android="http://schemas.android.com/apk/res/android"                 xmlns:tools="http://schemas.android.com/tools"                 android:layout_width="match_parent"                 android:layout_height="match_parent"                 android:paddingleft="@dimen/activity_horizontal_margin"                 android:paddingright="@dimen/activity_horizontal_margin"                 android:paddingtop="@dimen/activity_vertical_margin"                 android:paddingbottom="@dimen/activity_vertical_margin"                 tools:context=".mainactivity"                 android:background="#ffffed">      <listview         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:id="@+id/listview"         android:layout_centervertical="true"         android:layout_centerhorizontal="true"/> </relativelayout> 

jsonparse

package com.dredaydesigns.radiostationfinder;  /*  * $id: jsonvalue.java,v 1.1 2006/04/15 14:37:04 platform exp $  * created on 2006-4-15  */  import org.json.simple.parser.jsonparser;  import java.io.reader; import java.io.stringreader;   /**  * @author fangyidong<fangyidong@yahoo.com.cn>  */ public class jsonvalue {     /**      * parse java object input source.      * @param in      * @return instance of : jsonobject,jsonarray,string,boolean,long,double or null      */     public static object parse(reader in){         try{             jsonparser parser=new jsonparser();             return parser.parse(in);         }         catch(exception e){             return null;         }     }      public static object parse(string s){         stringreader in=new stringreader(s);         return parse(in);     } } 

you using 2 different json libraries might create conflict on code.

you using jsonarray , jsonvalue json simple library , jsonobject , jsonexception org.json library.

try use either one. hope solve issue.

edit:

you got first error (before applying fix) because have used jsonvalue class json simple parse data , jsonarray org.json store it. causes class cast exception.

after applying fix, have used jsonvalue , jsonarray classes json simple parse , store data in array form , jsonobject org.json store objects on jsonarray. in case, org.json.simple.jsonarray class doesn't have getjsonobject(int) , length() methods org.json.jsonarray have them. got 2 exceptions.


Comments

Popular posts from this blog

1111. appearing after print sequence - php -

java - WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/board/] in DispatcherServlet with name 'appServlet' -

Ruby on Rails, ActiveRecord, Postgres, UTF-8 and ASCII-8BIT encodings -