2017-03-21 13 views
0

マイjsonobjectここは、ループ条件

{ 
     "TopLevelDomainList": { 
     "TopLevelId": "01", 
     "DomainName": "List of Domains for e-Governance", 
     "APIVersion": "1.0", 
     "ListVersion": "1.1", 
     "ListVersionDate": "1/10/2015 12:30:50", 
     "Banner": { 
      "Image": "http://localhost/image/logo.jpg" 
     }, 
     "Footer": { 
      "Image": "http://localhost/image/footer.jpg" 
     }, 
     "ParticipatingDomains": [ 
      { 
      "Id": "1", 
      "DomainName": "toplevel1", 
      "Location": "http://toplevel.com", 
      "Icon": "http://toplevel.com" 
      }, 
      { 
      "Id": "2", 
      "DomainName": "toplevel2", 
      "Location": "http://toplevel.com", 
      "Icon": "http://toplevel.com" 
      } 
     ] 
     } 
    } 

アム書き込みJavaコードの下にされて何をしたい特定のSSや

ja =[{id:1,name:toplevel},{id:2,name:toplevel2}] 




    JSONObject objj = firstSport.getJSONObject("TopLevelDomainList"); 
     String ob = objj.getString("TopLevelId"); 
     System.out.println("ob is !!!=>"+ob); 

        if(firstSport.has("TopLevelDomainList")) 
        { 
         count=1;         
         obj1 = objj.getJSONArray("ParticipatingDomains"); 

         System.out.println("obj value is ===>"+obj1.length()); 


         for (int i = obj1.length()-1; i >=0; i--) { 

          JSONObject rec = obj1.getJSONObject(i); 
          Id = rec.getString("Id"); 
          System.out.println("id is !!!!!!!!!!!!!!!!!!!!!!"+Id); 
          Name = rec.getString("DomainName"); 
          banobj.put("Id", Id); 
          banobj.put("DomainName", Name); 
          banobj.put("HasChildren", "true"); 
          ja.put(banobj); 

          System.out.println("ja is ===> "+ja); 
          System.out.println("banobj1 value is !!!!"+banobj); 


         }    

        ss=ja.toString(); 
        System.out.println("ss is ===> "+ss); 

今取得していますJAためにJsonObjectをJsonArrayにJSONObjectを入れオーバーライドしようとしているときまた、値が同じようなJAアレイ1の代わりに、2を取得していますforループの逆をしようとしていた場合や、SS値は [{id:2,name:toplevel2},{id:2,name:toplevel2}] です。

+0

あなたは、デバッガを使用して使用してみたのですか? コードがコンパイルされません。 Id、Namem ja、banobjはどこにも定義されていませんので、変数に適切な名前を付けて、そのタイプを教えてください。 あなたのプログラムの彼の完全な出力を返す場合は、私たちが間違っている何を伝えるために簡単です。 –

答えて

0

あなたがあなたにちょうどovverideサイクルにおけるその値を使用すると、配列に入れしようとしているすべての要素に対して同じ banobj(同じ参照)を使用して、そうしているようです。

banobj.put("Id", Id); 
    banobj.put("DomainName", Name); 
    banobj.put("HasChildren", "true"); 
    ja.put(banobj); 
    banobj = new BanObj(); // I don't know what should be here exaclty 
0

のようなものを使用してみてくださいありがとう、だから私は、そのオーバーライド既存のデータのデータを入れていた場合、要素を追加する必要があります。今、JsronArrayBuilderとJsonObjectBuilderを使って要素を追加しています。その正常に動作します。 JsonArrayBuilder builder1 = Json.createArrayBuilder()。 JsonObjectBuilderビルダー= Json.createObjectBuilder()。

   for(int i=0;i<obj1.length();i++){ 
        JSONObject rec = obj1.getJSONObject(i); 
        Id = rec.getString("Id"); 
        Name = rec.getString("DomainName"); 
          builder.add("Id",Id) 
          .add("DomainName", Name) 
          .add("HasChildren", "true"); 
        builder1.add(builder);  

       }  empObj=builder1.build(); 


       ss=empObj.toString();