2011-10-07 2 views
0

JSON 배열로 변환 한 JSONObject를 별도의 문자열로 파싱했습니다. 나는 이것을 하나의 새로운 문자열을 형성하기 위해 연결했다. 다음은 내가 사용한 코드입니다. newtrsarray에 대한 4000chars 또는 크기에서 더 많은입니다 : 연결 중 여러 삽입이 필요합니까?

  for(int n = 0; n<newtrs_array.length();n++){ 
       JSONObject object = newtrs_array.getJSONObject(n); 
       String newcompanyid = object.getString("companyid"); 
       String newusername = object.getString("username"); 
       String newdate = object.getString("date"); 
       String newClientId = object.getString("clientid"); 
       String newprojectId = object.getString("projectid"); 
       String newniv1 = object.getString("niv1"); 
       String newniv2 = object.getString("niv2"); 
       String newworktypeid = object.getString("worktypeid"); 
       String newtimetypeid = object.getString("timetypeid"); 
       String newhours = object.getString("hours"); 
       String newcomment = object.getString("comment"); 
       String newprivatecomment = object.getString("privatecomment"); 
       String newopen = object.getString("open"); 
       String newreportid = object.getString("reportid"); 

       newtrsArray += newcompanyid+"#"+newusername+"#"+newdate+"#" 
           +newClientId+"#"+newprojectId 
           +"#"+newniv1+"#"+newniv2+"#"+newworktypeid 
           +"#"+newtimetypeid+"#"+newhours+"#"+newcomment 
           +"#"+newprivatecomment+"#"+newopen+"#"+newreportid; 
         } 
      } 

 for(int n=0; n<split_frombufferedValue.length; n++){ 
      if(split_frombufferedValue[n] != null){ 
      try{ 
       //Log.i(TAG, "***********%%%%%%%%%"+split_frombufferedValue[1]); 
       newtrsArray = split_frombufferedValue[0].toString(); 
       newschemaArray = split_frombufferedValue[1].toString(); 
       Log.i(TAG, "************* "+newschemaArray); 
       newdeletedtrsArray = split_frombufferedValue[2].toString(); 
       String newcreatedtrs_array = split_frombufferedValue[3].toString(); 
       String newsync_reponse = split_frombufferedValue[4].toString(); 
       String newmodtrs_array = split_frombufferedValue[5].toString(); 

      } catch(Exception e){ 
       e.printStackTrace(); 
      } 
     } 

     } 
      split_newtrsArray = newtrsArray.split("#"); 
        split_newdeletedtrsArray = newdeletedtrsArray.split("@@@@"); 
      split_newschemaArray = newschemaArray.split("%%%%"); 
      Log.i(TAG, "############# "+split_newtrsArray[0]+" -length "+split_newtrsArray.length); 

    } 

내 문제가 있다는 것입니다 newtrsarray을 분할하는 데 사용되는 코드입니다. 이로 인해 "#"이 두 번 또는 세 번 삽입 될 수 있습니다. 아래 그림과 같이

&&--Second activty:HTTPClient--**(824): !!!!!------UTB17#DA#2011-10-10#1000#363636#10##105#30#5###no#30667UTB17#DA#2011-09-12#1000#363636#10##100##6##Not Available#yes#31659UTB17#DA#2011-09-13#1000#363636#10##100##2###yes#31665 

이 문제를 해결하려면 어떻게해야합니까? 값은 하나의 문자열로 연결 한 다음 다른 함수에서 분리해야합니다. 그런 다음 데이터베이스에 삽입해야합니다. 희망을 분명히 설명 할 수 있었으면 좋겠다.

건배!

답변

1

당신의 문제는 배열에 null 요소가있는 경우 다시 삽입 할 때 발생한다고 생각합니다. if 문을 체크하고 null인지 아닌지 확인하십시오. 그렇게하십시오 :

   if(newcompanyid.equals("") || newcompanyid == null || newusername.equals("") || newusername == null 
         || newdate.equals("") || newdate == null || newClientId.equals("") || newClientId == null || 
         newprojectId.equals("") || newprojectId == null || newniv1.equals("") || newniv1 == null || 
         newniv2.equals("") || newworktypeid.equals("") || newworktypeid == null ||newtimetypeid.equals("") 
         || newtimetypeid == null || newhours.equals("") ||newhours == null ||newcomment.equals("") 
         ||newcomment == null ||newprivatecomment.equals("") ||newprivatecomment == null||newopen.equals("") 
         ||newopen == null||newreportid.equals("") || newreportid == null) 
관련 문제