2017-03-21 4 views
0

Mein jsonobject gegeben unterbeim Versuch JSONObject in JsonArray Überschreiben Sie die JsonObject in für Schleifenbedingung

{ 
     "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" 
      } 
     ] 
     } 
    } 

Am Schreiben von Java-Code hier zu setzen, was ich will, ist ss oder

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); 

jetzt bin immer ja oder ss Wert ist [{id:2,name:toplevel2},{id:2,name:toplevel2}] wenn ich das umgekehrte für die Schleife versuche, bekomme auch Wert, der gleich wie ya Feld 1 anstelle von 2 ist;

+0

haben Sie versucht, einen Debugger zu verwenden? Ihr Code wird nicht kompiliert. Id, Namem ja, Banobj sind nirgendwo definiert, bitte verwenden Sie die richtige Benennung für Variablen und sagen Sie uns, was der Typ ist. Es ist einfacher für uns, Ihnen zu sagen, was falsch ist, wenn Sie die volle Ausgabe Ihres Programms zurückgeben. –

Antwort

0

Es scheint, dass Sie der gleiche banobj (die gleiche Referenz) für jedes Element verwenden, die Sie versuchen, in einem Array zu setzen, Sie so nur ovveride in Zyklus seine Werte.

Probieren Sie etwas wie

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

Danke verwenden, also brauche ich die Elemente hinzuzufügen, wenn die Daten seiner Überschreibung die vorhandenen Daten setzen werde. Jetzt verwende ich JsronArrayBuilder und JsonObjectBuilder, um die Elemente hinzuzufügen. es funktioniert richtig. JsonArrayBuilder builder1 = Json.createArrayBuilder(); JsonObjectBuilder-Builder = 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();