【发布时间】:2016-02-21 10:32:01
【问题描述】:
我是 android 新手,无法从下面的 JSON 代码中检索数据。有建议请回复。
Json 代码:-
{"category":{"name":["Spa","Salon","Makeup"],"brand_title":["Aura Thai Spa- Greater Kailash 1",.....]}}
安卓代码:
public class Salon extends AppCompatActivity {
String url="my_url";
String catname,brandname;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_salon);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
sname=(TextView)findViewById(R.id.person_name);
bname=(TextView)findViewById(R.id.person_age);
new MyAsyncTask().execute(url);
}
class MyAsyncTask extends AsyncTask<String, String, JSONObject> {
URLConnection urlConnection;
String result = "";
JSONObject jsonRootObject;
@Override
protected JSONObject doInBackground(String... params) {
try {
URL url_data = new URL(url);
urlConnection = url_data.openConnection();
urlConnection.connect();
// Convert response to string using String Builder
InputStream inputStream = urlConnection.getInputStream();
BufferedReader bReader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"), 8);
StringBuilder sBuilder = new StringBuilder();
String line;
while ((line = bReader.readLine()) != null) {
sBuilder.append(line + "\n");
}
inputStream.close();
result = sBuilder.toString();
}catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
catch (Exception e) {
//Log.e("StringBuilding & BufferedReader", "Error converting result " + e.toString());
}
try{
jsonRootObject = new JSONObject(result);
}catch(JSONException e){
e.printStackTrace();
}
return jsonRootObject;
}
protected void onPostExecute(JSONObject result){
try {
//Iterate the jsonArray and print the info of JSONObjects
JSONArray jsonArray = jsonRootObject.getJSONArray("name");
for(int i=0; i < jsonArray.length(); i++) {
JSONObject name_0 = jsonArray.getJSONObject(i);
catname = name_0.getString("").toString();
}
/* JSONArray jsonArray2 = jsonRootObject.getJSONArray("brand_name");
JSONObject brand = jsonArray2.getJSONObject(0);
brandname = brand.getString("brand_title[0]");*/
//loat salary = Float.parseFloat(jsonObject.optString("salary").toString());
sname.setText(catname);
//bname.setText(brandname);
} catch (JSONException e) {e.printStackTrace();}
}
}
}
【问题讨论】:
-
“我无法从这个 JSON 中检索数据” 以什么方式?问题是什么 ?有没有抛出异常?发布你的 logcat。
标签: java android json android-asynctask