2013-05-03 45 views
1

我得到一个JSON数组。Android JSON对象获取字符串问题

[{"0":"500","post_id":"500","1":"Ps-2","post_title":"Ps-2","2":"Ps-2 in new condition. used only for 15 to 20 times.\n3 dvd's will also be given freely.\nthis all for a nominal price","post_des":"Ps-2 in new condition. used only for 15 to 20 times.\n3 dvd's will also be given freely.\nthis all for a nominal price","3":"2013-02-16 04:02:24","post_date":"2013-02-16 04:02:24","4":"2013-02-16 04:02:24","edit_date":"2013-02-16 04:02:24","5":"1","post_status":"1","6":"5","user_id":"5","7":"0","featuered":"0","8":"11","sub_cat_id":"11","9":"1","cat_id":"1","10":"7500","post_price":"7500","11":".\/uploads\/lmf-classifieds-pk\/folder1\/2013-02-16\/500\/1361014226-ps-2-lmf-com-pk.jpg","post_img":".\/uploads\/lmf-classifieds-pk\/folder1\/2013-02-16\/500\/1361014226-ps-2-lmf-com-pk.jpg","12":"1","post_country_id":"1","13":"7","post_state_id":"7","14":"92","post_city_id":"92","15":"olx","post_ref":"olx","16":"03335525488","number":"03335525488","17":"7","state_id":"7","18":"Punjab","state_title":"Punjab","19":"Punjab","state_des":"Punjab","20":"1","state_status":"1","21":"1","country_id":"1","22":"populer","state_type":"populer","23":"92","city_id":"92","24":"Rawalpindi","city_title":"Rawalpindi","25":"Rawalpindi","city_des":"Rawalpindi","26":"1","city_status":"1","27":"7","28":"populer","city_type":"populer","29":"populer","is_important":"populer","30":"16-February-2013","p_date":"16-February-2013","image1":"..\/uploads\/lmf-classifieds-pk\/folder1\/2013-02-16\/500\/1361014226-ps-2-lmf-com-pk.jpg","image2":"..\/uploads\/lmf-classifieds-pk\/folder1\/2013-02-16\/500\/1361014225-ps-2-lmf-com-pk.jpg"}] 

然后,我将该数组转换为JSON对象。我该如何检查“数字”索引是否存在于这个数组中?

这是我的完整代码:

package com.example.lmf; 
import java.util.ArrayList; 
import org.json.JSONArray; 
import org.json.JSONObject; 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.graphics.Color; 
import android.graphics.Typeface; 
import android.graphics.drawable.Drawable; 
import android.net.Uri; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.MenuItem.OnMenuItemClickListener; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class adsDetail extends Activity { 

    String id = ""; 
    String title = null; 
    String desc = null; 
    String num = ""; 
    ArrayList<String> files = new ArrayList<String>(); 
    String arr[] = {}; 
    Context context = this; 
    final static String URL = "http://www.lmf.com.pk/admin/json.php?"; 
    final getInternetData obj = new getInternetData(); 
    public ImageLoader imageLoader = null; 
    public FileCache clearCache = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.ads_detail); 
     id = getIntent().getExtras().getInt("id")!= 0 ? "id="+getIntent().getExtras().getInt("id") : ""; 
     Button share = (Button) findViewById(R.id.share); 
     share.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       //create the send intent 
       Intent shareIntent = 
       new Intent(android.content.Intent.ACTION_SEND); 

       //set the type 
       shareIntent.setType("text/plain"); 

       //add a subject 
       shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
       title); 

       //build the body of the message to be shared 
       String shareMessage = "http://lmf.com.pk?single_ad.php?title="+title+"&"+id; 

       //add the message 
       shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, 
       shareMessage); 

       //start the chooser for sharing 
       startActivity(Intent.createChooser(shareIntent, 
       title)); 

      } 
     }); 

     final ImageView call = (ImageView) findViewById(R.id.imageView2); 
     call.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       String uri = "tel:" + num.trim() ; 
       Intent intent = new Intent(Intent.ACTION_DIAL); 
       intent.setData(Uri.parse(uri)); 
       startActivity(intent); 

      } 
     }); 
     //obj.showProgress(context); 
     new getBackgroundData().execute(); 

    } 

////////////Async Class 

private class getBackgroundData extends AsyncTask<Void, Integer, JSONArray> 
{ 
@Override 
protected JSONArray doInBackground(Void... params) 
{ 
try 
{ 
JSONArray array = obj.getDATA(id,URL); 
return array; 

} 
catch(Exception e) 
{ 
e.printStackTrace(); 
} 
return null; 
} 


@Override 
protected void onPostExecute(JSONArray array) 
{ 

try 
{ 

JSONObject row = array.getJSONObject(0); 

//// Post Title Creation start here ///////// 

TextView tv = (TextView) findViewById(R.id.textView1); 
tv.setText(row.getString("post_title")); 
title = row.getString("post_title"); 
//// Post Title Creating Ends here ///////// 

//// Getting Phone Number ////////////////// 
if(row.has("number")) 
{ 
    num = row.getString("number"); 
} 
else 
{ 
    num = "123"; 
} 

Toast.makeText(context, num, Toast.LENGTH_LONG).show(); 
//// Getting Number Ends HEre ///////////// 

////Post Price Creation start here ///////// 
TextView price = (TextView) findViewById(R.id.textView2); 
if(row.getString("post_price")!="" && row.getString("post_price")!="FREE") 
{ 
    price.setText(row.getString("post_price")); 
} 
else 
{ 
    price.setText(row.getString("post_price")); 
} 
    price.setTextColor(Color.LTGRAY); 
    price.setTextSize(16); 
    price.setTypeface(null,Typeface.BOLD); 

////Post Price Creating Ends here ///////// 

////Post user Creation start here ///////// 
TextView user = (TextView) findViewById(R.id.post_user); 
user.setText("Anonymouse"); 
////Post user Creating Ends here ///////// 

////Post state Creation start here ///////// 
TextView state = (TextView) findViewById(R.id.textView3); 
state.setText(row.getString("state_title")); 
state.setTextSize(10); 
state.setTypeface(null,Typeface.BOLD); 
////Post state Creating Ends here ///////// 

////Post city Creation start here ///////// 
TextView city = (TextView) findViewById(R.id.textView4); 
city.setText(row.getString("city_title")); 
city.setTextSize(9); 
city.setTypeface(null,Typeface.BOLD); 
////Post city Creating Ends here ///////// 

////Post post date Creation start here ///////// 
TextView date = (TextView) findViewById(R.id.post_date); 
date.setText("Posted On : "+row.getString("p_date")); 
////Post post date Creating Ends here ///////// 

////Post Price Creation start here ///////// 
TextView post_des = (TextView) findViewById(R.id.post_detail); 
post_des.setText(row.getString("post_des").replaceAll("\\<.*?>","")); 
desc = row.getString("post_des"); 
////Post Price Creating Ends here ///////// 



//// Image Creating Starts from here ///////// 
ImageView imageView = (ImageView) findViewById(R.id.imageView1); 
String[] parts = row.getString("post_img").split("/"); 
int last_index = parts.length - 1; 
//String str = ""; 
for(int j=0; j<last_index; j++) 
{ 
    //str += parts[j]+"/"; 
} 

String path = "http://www.lmf.com.pk/"+row.getString("post_img"); 
getImageUrls(path); 
Drawable image = drawable_from_url(path,""); 
imageView.setBackgroundDrawable(image); 
imageView.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     Intent i = new Intent(context,com.example.lmf.ImageGallery.class); 
     i.putExtra("imageUrlArray", files.toArray(new String[files.size()])); 
     startActivity(i); 
    } 
}); 

//// Image Creating Ends here ///////// 

//obj.hideProgress(); 

} 
catch(Exception e) 
{ 
    e.printStackTrace(); 

} 

} 


} 


/////////// Ends Here 
@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    MenuItem item = menu.add ("Quit"); 
    MenuItem item2 = menu.add ("Clear Cache"); 
    item.setOnMenuItemClickListener (new OnMenuItemClickListener() 
    { 
     @Override 
     public boolean onMenuItemClick (MenuItem item) 
     { 
      //clearArray(); 
      finish(); 
      return true; 
     } 
    }); 

    item2.setOnMenuItemClickListener (new OnMenuItemClickListener() 
    { 
     @Override 
     public boolean onMenuItemClick (MenuItem item) 
     { 
      //clearCahe(); 
      clearCache.clear(); 
      return true; 
     } 
    }); 
      return true; 
} 

Drawable drawable_from_url(String url, String src_name) throws 
java.net.MalformedURLException, java.io.IOException 
{ 
return Drawable.createFromStream(((java.io.InputStream) 
    new java.net.URL(url).getContent()), src_name); 
} 

public void getImageUrls(String path) 
{ 
    files.add(path); 

} 



} 
+0

我想,你需要的是这样的:'jsonArray.getJSONObject(0)。先后(“数字”)' – iBecar 2013-05-03 22:12:28

+0

朋友我都用这个,但没有运气。 – 2013-05-03 22:19:00

+0

你没有将jsonarray转换成jsonobject,你只是把一个jasonobject放入jsonarray中。你需要做的是用'getJSONObject(0)'从数组中获取这个对象。 JSONObject确实有一个'has(String)'方法来检查密钥。你能更精确什么不行吗?你可能会发布一些令你感到困扰的代码吗? – iBecar 2013-05-03 22:27:18

回答

3

我刚才想这和它的作品。你在做类似的事吗?

JSONArray array = null; 
String num = ""; 
try { 
    array = new JSONArray("[{\"0\":\"500\",\"post_id\":\"500\",\"1\":\"Ps-2\",\"post_title\":\"Ps-2\",\"2\":\"Ps-2 in new condition. used only for 15 to 20 times.\\n3 dvd's will also be given freely.\\nthis all for a nominal price\",\"post_des\":\"Ps-2 in new condition. used only for 15 to 20 times.\\n3 dvd's will also be given freely.\\nthis all for a nominal price\",\"3\":\"2013-02-16 04:02:24\",\"post_date\":\"2013-02-16 04:02:24\",\"4\":\"2013-02-16 04:02:24\",\"edit_date\":\"2013-02-16 04:02:24\",\"5\":\"1\",\"post_status\":\"1\",\"6\":\"5\",\"user_id\":\"5\",\"7\":\"0\",\"featuered\":\"0\",\"8\":\"11\",\"sub_cat_id\":\"11\",\"9\":\"1\",\"cat_id\":\"1\",\"10\":\"7500\",\"post_price\":\"7500\",\"11\":\".\\/uploads\\/lmf-classifieds-pk\\/folder1\\/2013-02-16\\/500\\/1361014226-ps-2-lmf-com-pk.jpg\",\"post_img\":\".\\/uploads\\/lmf-classifieds-pk\\/folder1\\/2013-02-16\\/500\\/1361014226-ps-2-lmf-com-pk.jpg\",\"12\":\"1\",\"post_country_id\":\"1\",\"13\":\"7\",\"post_state_id\":\"7\",\"14\":\"92\",\"post_city_id\":\"92\",\"15\":\"olx\",\"post_ref\":\"olx\",\"16\":\"03335525488\",\"number\":\"03335525488\",\"17\":\"7\",\"state_id\":\"7\",\"18\":\"Punjab\",\"state_title\":\"Punjab\",\"19\":\"Punjab\",\"state_des\":\"Punjab\",\"20\":\"1\",\"state_status\":\"1\",\"21\":\"1\",\"country_id\":\"1\",\"22\":\"populer\",\"state_type\":\"populer\",\"23\":\"92\",\"city_id\":\"92\",\"24\":\"Rawalpindi\",\"city_title\":\"Rawalpindi\",\"25\":\"Rawalpindi\",\"city_des\":\"Rawalpindi\",\"26\":\"1\",\"city_status\":\"1\",\"27\":\"7\",\"28\":\"populer\",\"city_type\":\"populer\",\"29\":\"populer\",\"is_important\":\"populer\",\"30\":\"16-February-2013\",\"p_date\":\"16-February-2013\",\"image1\":\"..\\/uploads\\/lmf-classifieds-pk\\/folder1\\/2013-02-16\\/500\\/1361014226-ps-2-lmf-com-pk.jpg\",\"image2\":\"..\\/uploads\\/lmf-classifieds-pk\\/folder1\\/2013-02-16\\/500\\/1361014225-ps-2-lmf-com-pk.jpg\"}]\n"); 
    JSONObject row = array.getJSONObject(0); 
    if(row.has("number")) { 
     num = row.getString("number"); 
    } 

} catch (JSONException e) { 

} 
Toast.makeText(this, num, Toast.LENGTH_LONG);