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
Post a Comment