2012-08-27 3 views
0

jsonObject를 생성하는 제네릭 클래스를 만들고 싶습니다.안드로이드는 다른 종류의 jsonObject를 생성합니다.

@Override 
    protected JSONObject doInBackground(String... params) { 
     byte[] result = null; 
     Iterator iter = mData.entrySet().iterator(); 

     JSONObject jsonObj = new JSONObject(); 

     Iterator it = mData.entrySet().iterator(); 
     while (it.hasNext()) { 
      Map.Entry pairs = (Map.Entry)it.next(); 
      try { 
       jsonObj.put((String) pairs.getKey(), (String) pairs.getValue()); 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      it.remove(); // avoids a ConcurrentModificationException 
     } 

하지만 난 : 내가 좋아하는 뭔가를 시도

{login:"mylogin",pwd:"mypwd"} 

: 의 종류

{"chunkSize":10,"filters" 
[{"field":"segmentOwners.id","operator":"EQUAL","value":"11578","valueType":"java.lang.Integer"}, 
{"field":"language","operator":"EQUAL","value":"FR","valueType":"java.lang.String"}, 
{"field":"customerId","operator":"EQUAL","value":"77","valueType":"java.lang.Integer"}] 
,"orderBy":[{"field":"creationTime","order":"DESC"}],"page":0} 

또는 단순한 요청과 같은 객체의 differents을 만들 수있는 클래스를 생성 할 수 있나요 그게 같은 종류의 hashmap (string, jsonObjet ...)인지 모르겠다.

답변

1

다만 수행 JSON 문자열에서 JSONObject의 인스턴스를 만들려면 다음

JSONObject jsonObj = new JSONObject("<your json string>"); 
+0

+1. JSONObject는 유효한 JSON 인 한 문자열의 내용을 신경 쓰지 않습니다. 결과 JSONObject는'getInt ("chunkSize")'또는'getString ("login")'또는'getJSONArray ("filters")'에 응답합니다. 또는 객체가 그 키를 가지고 있지 않으면'JSONException'을 던집니다. –

+0

ty, 나는 너의 방법으로 시도 할 것이다! –

0

나는 일반 컨테이너 클래스를 만드는 것 (즉, DataContainer) 어떤 데이터가 보관되어 있더라도 상관없이 통합 된 API를 노출합니다 (즉, setFromJson(), getData()). 그런 다음 각 데이터 구조에 대해 별도의 개체를 만듭니다 (즉, DataLogin, DataSomething). 그런 다음 원격 소스에서 json 데이터를 가져올 때 즉 DataLogin 객체를 만들고이를 DataContainer에 건네거나 DataLogin이 사용되어야한다는 것을 감지 할 수 있도록 json을 DataContainer에 전달할 수 있습니다. 최선의 접근법이되어야 함). 그런 다음 json 데이터에서 작동 할 것으로 예상되는 모든 메서드를 DataContainer 개체와 메서드로 전달하면 getType()을 수행 할 수 있습니다 (물론 직접 입력해야합니다). 그러면 데이터가 저장되는 데이터를 반환하고 getData() 데이터를 얻습니다. 노력하고 있습니다.