简体   繁体   English

如何解析这个JSON响应

[英]How to parse this JSON response

I am using JSon response to parse title,date content and thumbnail images and place that in listview. 我正在使用JSon响应来解析标题,日期内容和缩略图,并将其放在listview中。 I parsed title, date,content and name which are obtaining in listview but when i included thumbnail images json parsing in loop to display in listview nothing is displaying in output.Can any one help me how to parse json response. 我解析了在列表视图中获取的标题,日期,内容和名称,但是当我将缩略图图像json循环解析以在列表视图中显示时,输出中没有任何显示。任何人都可以帮助我如何解析json响应。 JSON responseis here JSON响应在这里

//json response to parse  
{
 "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",

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

following code is used to add images and data to listview 以下代码用于向列表视图添加图像和数据

public class CustomizedListView extends Activity {
JSONArray posts = null;

// All static variables
static final String URL = "website/ads/?json=get_recent_posts";



  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_SLUG = "slug";
  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 {
        JSONArray posts = json.getJSONArray(KEY_POSTS);
        JSONArray attachments = json.getJSONArray(KEY_ATTACHMENTS);
    // 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);

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

                //loop                  
                for(int j = 0; j < attachments.length(); j++){
                    JSONObject d = attachments.getJSONObject(j);
                    String slug = c.getString(KEY_SLUG);

                    JSONObject images = d.getJSONObject(KEY_IMAGES);

                    JSONObject thumbnail = images.getJSONObject(KEY_THUMB_URL);
                    String url = thumbnail.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);
        map.put(KEY_SLUG, slug);
        map.put(KEY_URL, url);


        // 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) {


        }
    });     
}   
     }

Your attachement is inside post array in json but in code you kept it outside for loop for posts. 您的附件位于json中的 post数组内部,但在代码中,您将其保留在外部以进行帖子循环。 Please keep it inside to get each attachment per post. 请保留在里面,以获取每个帖子的每个附件。

Try applying as per the following image and cross verify the implementataions. 尝试按照下图所示应用,并交叉验证实现。

在此处输入图片说明

Hope this will help you. 希望这会帮助你。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM