gpt4 book ai didi

java - 解析 JSON 时出错

转载 作者:太空狗 更新时间:2023-10-29 15:53:57 25 4
gpt4 key购买 nike

我正在尝试从 SD 卡解析 JSON。当我尝试执行 AsyncTask 简单适配器时,出现以下错误:

The method execute(String...) in the type AsyncTask<String,Void,SimpleAdapter> is not applicable for the arguments (StringBuilder)

我花了一个多星期的时间来解决这段代码,但我没能成功。我的代码是:

public class Jeans extends Activity {
private final String JSON_file = "country.json";
File jsonFile;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.baby1_1);

/** Getting Cache Directory */
File cDir = ExternalStorage.getSDCacheDir( this, "json_files" );

/** Getting a reference to temporary file, if created earlier */
jsonFile = new File(cDir.getPath() + "/" + JSON_file) ;

String strLine="";
StringBuilder strJson = new StringBuilder();

/** Reading contents of the temporary file, if already exists */
try {
FileReader fReader = new FileReader(jsonFile);
BufferedReader bReader = new BufferedReader(fReader);

/** Reading the contents of the file , line by line */
while( (strLine=bReader.readLine()) != null ){
strJson.append(strLine);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}


System.out.println(strJson);


/** The parsing of the xml data is done in a non-ui thread */
// ListViewLoaderTask listViewLoaderTask = new ListViewLoaderTask();

/** In here i'm getting the error */
new ListViewLoaderTask().execute(strJson);

}


private class ListViewLoaderTask extends AsyncTask<String, Void, SimpleAdapter>{

JSONObject jObject;
/** Doing the parsing of xml data in a non-ui thread */
@Override
protected SimpleAdapter doInBackground(String... strJson) {
try{
jObject = new JSONObject(strJson[0]);
CountryJSONParser countryJsonParser = new CountryJSONParser();
countryJsonParser.parse(jObject);
}catch(Exception e){
Log.d("JSON Exception1",e.toString());
}

CountryJSONParser countryJsonParser = new CountryJSONParser();

List<HashMap<String, String>> countries = null;

try{
/** Getting the parsed data as a List construct */
countries = countryJsonParser.parse(jObject);
}catch(Exception e){
Log.d("Exception",e.toString());
}

/** Keys used in Hashmap */
String[] from = { "country","flag","details"};

/** Ids of views in listview_layout */
int[] to = { R.id.tv_country,R.id.iv_flag,R.id.tv_country_details};

/** Instantiating an adapter to store each items
* R.layout.listview_layout defines the layout of each item
*/
SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), countries, R.layout.lv_layout, from, to);

return adapter;
}

/** Invoked by the Android system on "doInBackground" is executed completely */
/** This will be executed in ui thread */
@Override
protected void onPostExecute(SimpleAdapter adapter) {

/** Getting a reference to listview of main.xml layout file */
ListView listView = ( ListView ) findViewById(R.id.lv_countries);

/** Setting the adapter containing the country list to listview */
listView.setAdapter(adapter);
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}

请有人为我解决这个代码。

最佳答案

错误的类型,应该是String:

new ListViewLoaderTask().execute(strJson.toString());

关于java - 解析 JSON 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18292574/

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