0

jsonparser を使用して、json 応答から取得したデータと画像を解析しています。画像出力を解析するためにこのコードを含めると、D/AndroidRuntime(441): Shutting down VM D/dalvikvm(441): Debugger has detached; になります。オブジェクト レジストリには 1 個のエントリがありました

JSONArray attachments = json.getJSONArray(KEY_ATTACHMENTS);
                for(int j = 0; j < attachments.length(); j++){
                    JSONObject d = attachments.getJSONObject(j);
                    JSONObject images = d.getJSONObject(KEY_IMAGES);
                    String thumbnail = d.getString(KEY_THUMB_URL);

                    JSONObject thumnails = d.getJSONObject(KEY_THUMB_URL);
                    String url = author.getString(KEY_URL);

コンテンツの解析に問題がありますか? どんな体でも助けられますか 画像は出力のデータとともに表示されます。私のJSONレスポンスは

{
"status": "ok",

"posts": [
    {
        "id": 2498,
        "title": "jigsaw lamp imported from thailand",
        "content": "<p>Hi. It&#8217;s a invitation to have a look at a unique lamp shade called jigsaw lamp from thailand. Available in multi attractive colours.</p>\n",
        "date": "2012-12-26 09:48:15",
         "author": {
            "name": "Tapas123456",
                        },
            "attachments": [
            {
                "description": "",
                "caption": "",
                "mime_type": "image/jpeg",
                "images": {

                    "thumbnail": {
                        "url": "http://site/wp-content/uploads/2012/12/646675-50x47.jpg",

                    }
                }
            },...............

以下はコードです

     public class CustomizedListView extends Activity {
   JSONArray posts = null;

  // All static variables
  static final String URL = "http://website";



  static final String KEY_POSTS = "posts";
  static final String KEY_ID = "id";
  static final String KEY_TITLE = "title";
  static final String KEY_DATE = "date";
  static final String KEY_CONTENT = "content";
  static final String KEY_AUTHOR = "author";
  static final String KEY_NAME = "name";
  static final String KEY_ATTACHMENTS = "attachments";
  static final String KEY_THUMB_URL = "thumbnail";
  static final String KEY_IMAGES = "images";
  static final String KEY_URL = "url";

  ListView list;
     LazyAdapter adapter;

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


    ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();


    // Creating JSON Parser instance
            JSONParser jParser = new JSONParser();

            // getting JSON string from URL
            JSONObject json = jParser.getJSONFromUrl(URL);
            try {
            posts = json.getJSONArray(KEY_POSTS);
    // looping through all song nodes <song>
            for(int i = 0; i < posts.length(); i++){
                JSONObject c = posts.getJSONObject(i);
                // Storing each json item in variable
                String id = c.getString(KEY_ID);
                String title = c.getString(KEY_TITLE);
                String date = c.getString(KEY_DATE);
                String content = c.getString(KEY_CONTENT);

                // Phone number is agin  JSON Object
                JSONObject author = c.getJSONObject(KEY_AUTHOR);
                String name = author.getString(KEY_NAME);

                JSONArray attachments = json.getJSONArray(KEY_ATTACHMENTS);
                for(int j = 0; j < attachments.length(); j++){
                    JSONObject d = attachments.getJSONObject(j);
                    JSONObject images = d.getJSONObject(KEY_IMAGES);
                    String thumbnail = d.getString(KEY_THUMB_URL);

                    JSONObject thumnails = d.getJSONObject(KEY_THUMB_URL);
                    String url = author.getString(KEY_URL);
                }
        // creating new HashMap
        HashMap<String, String> map = new HashMap<String, String>();

        // adding each child node to HashMap key => value
        map.put(KEY_ID, id);
        map.put(KEY_TITLE, title);
        map.put(KEY_DATE, date);
        map.put(KEY_NAME, name);
        map.put(KEY_CONTENT, content);

        // adding HashList to ArrayList
        songsList.add(map);
            }   
            } catch (JSONException e) {
                e.printStackTrace();

                }


    list=(ListView)findViewById(R.id.list);

    // Getting adapter by passing json data ArrayList
    adapter=new LazyAdapter(this, songsList);        
    list.setAdapter(adapter);


    // Click event for single list row
    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {


        }
         });        
          } 
            }

LazyAdapter.java

public class LazyAdapter extends BaseAdapter {

private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader; 

public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader=new ImageLoader(activity.getApplicationContext());
}

public int getCount() {
    return data.size();
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)
        vi = inflater.inflate(R.layout.list_row, null);

    TextView title = (TextView)vi.findViewById(R.id.title); // title
    TextView date = (TextView)vi.findViewById(R.id.artist); // artist name
    TextView content = (TextView)vi.findViewById(R.id.duration);  // duration
    TextView name = (TextView)vi.findViewById(R.id.name); 
    // duration
    ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image); // thumb image

    HashMap<String, String> song = new HashMap<String, String>();
    song = data.get(position);


    ListView list;
    // Setting all values in listview
    title.setText(song.get(CustomizedListView.KEY_TITLE));
    date.setText(song.get(CustomizedListView.KEY_DATE));
    content.setText(song.get(CustomizedListView.KEY_CONTENT));
    name.setText(song.get(CustomizedListView.KEY_NAME));

    imageLoader.DisplayImage(song.get(CustomizedListView.KEY_URL), thumb_image);
    return vi;
        }
        }

logcat エラー 12-29 14:42:59.152: D/AndroidRuntime(449): CheckJNI がオンになっています 12-29 14:42:59.273: D/AndroidRuntime(449): --- ネイティブ関数の登録 --- 12-29 14 :42:59.732: D/AndroidRuntime(449): VM 12-29 をシャットダウンしています 14:42:59.742: D/dalvikvm(449): デバッガーが切り離されました。オブジェクト レジストリには 1 つのエントリがありました 12-29 14:42:59.752: I/AndroidRuntime(449): 注: スレッド 'Binder Thread #3' のアタッチに失敗しました 12-29 14:43:00.172: D/AndroidRuntime(457): > >>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 12-29 14:43:00.172: D/AndroidRuntime(457): CheckJNI が ON 12- 29 14:43:00.292: D/AndroidRuntime(457): --- ネイティブ関数の登録 --- 12-29 14:43:00.772: I/ActivityManager(58): 開始アクティビティ: Intent { act=android.intent. action.MAIN cat=[android.intent.category. LAUNCHER] flg=0x10000000 cmp=com.example.androidhive/.CustomizedListView } 12-29 14:43:00.783: D/AndroidRuntime(457): VM のシャットダウン 12-29 14:43:00.783: D/dalvikvm(457) : デバッガーが切り離されました。オブジェクト レジストリには 1 つのエントリがありました 12-29 14:43:00.792: I/AndroidRuntime(457): 注: スレッド 'Binder Thread #3' のアタッチに失敗しました

4

1 に答える 1

1

現在の json を次のように解析します。

   JSONObject json=new JSONObject("pass your json string here");

  JSONArray arrjson = json.getJSONArray("posts");

   for(int j = 0; j < arrjson.length(); j++){
        JSONObject jsonimages = attachments.getJSONObject(j);

       JSONArray attachmentsimages = jsonimages.getJSONArray("attachments");

      for(int i = 0; i < attachmentsimages.length(); i++){

           JSONObject imagesjson = attachmentsimages.getJSONObject(i);

           JSONObject imagesjsonnew = imagesjson.getJSONObject("images");
           JSONObject thumnailsimages = imagesjsonnew.getJSONObject("thumbnail");

           String url = thumnailsimages.getString("url");
     }

}
于 2012-12-29T08:28:37.823 に答える