使用JSON对象填充JSON数组

时间:2012-07-12 07:57:06

标签: android json

在下面的代码中,我试图用JSON对象(书和相机)填充JSON数组。

 [  {
  "camera":{
     "picture":"http:\/\/img7.flixcart.com\/image\-imacyb5emj5yztet.jpeg",
     "model":"Lumix DMC-FP3 Point & Shoot",
     "make":"Panasonic",
     "price":5830
  }
 },
{
  "camera":{
     "picture":"http:\/\/sp.sony-europe.com\/da.jpeg",
     "model":"Digital Still Camera - H Series - DSC-HX200V",
     "make":"Sony",
     "price":510
  }
 },
 {
  "book":{
     "description":"What is self, and how can a",
     "authors":"Douglas R Hofstadter",
     "price":650,
     "id":40724766,
     "title":"G\u00f6del, Escher, Bach: an Eternal Golden Braid"
  }
  },
 {
  "camera":{
     "picture":"http:\/\/www.usa.canon.com\/60d_586x186.gif",
     "model":"Digital SLR Camera EOS 60D",
     "make":"Canon",
     "price":999
  }
  },
   {
  "book":{
     "description":"Tgdfgf fgfg ",
     "authors":"Harold Abelson and Gerald Jay Sussman with Julie Sussman",
     "price":469,
     "id":51087,
     "title":"Structure and Interpretation of Computer Programs"
  }
},

]

public void getDetalFromServer() {
        // TODO Auto-generated method stub

        String  URL="xyz.php";
        HttpClient client= new DefaultHttpClient();
        HttpPost post=new HttpPost(URL);

        try {

            HttpResponse response =client.execute(post);
            HttpEntity getResEntity=response.getEntity();
            String result="";
            if(getResEntity!=null){
                result=EntityUtils.toString(getResEntity);
                System.out.println("result from server: "+result);

                bookDescription=new ArrayList<String>();
                bookAuthors=new ArrayList<String>();
                bookPrice=new ArrayList<String>();
                bookID=new ArrayList<String>();
                bookTitle=new ArrayList<String>();


                responseArray=new JSONArray(result);

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

                    JSONObject bookObject=(JSONObject) responseArray.getJSONObject(i);
                                            bookDescription.add(bookObject.get("description").toString());
                                            bookAuthors.add(bookObject.get("authors").toString());                                              bookPrice.add(bookObject.get("price").toString());

bookID.add(bookObject.get( “ID”)的toString()); bookTitle.add(bookObject.get( “标题”)的toString());

                }                                       
            }

        } catch (Exception e) {
            // TODO: handle exception
        }
    }

使用此代码,我只能获得响应的第一个对象。现在我只是试图从响应中解析Music对象。

1 个答案:

答案 0 :(得分:2)

             responseArray=new JSONArray(result);
              JSONObject bookObject=null;
               JSONObject json_user1=null;
               JSONObject json_user2=null;
            for(int i=0;i<responseArray.length();i++){

                bookObject= responseArray.getJSONObject(i);
                 if (bookObject.has("book")){
                json_user1 = bookObject.getJSONObject("book");   
                 bookDescription.add(json_user1.getString("description").toString());  
                  bookAuthors.add(json_user1.getString("authors").toString()); 
             }
                else if(bookObject.has("camera")){
                     json_user2 = bookObject.getJSONObject("camera"); 
                     /** Add Camera data in the lists here same as done for book */
               }
          }

试试这个....你的json数组里面放了json对象。所以你需要首先从数组中检索书籍和相机等json对象,然后从book对象中获取描述和所有...:)