2013-08-28 3 views
0

제목이 매우 정확하지 않지만 원하는 것을 설명하겠습니다. 이 긴 JSONObject (슬프게도 배열이 아니므로 루프를 돌릴 수 없습니다) 안에 비슷한 요소 (ID, 이름, 아이콘)가있는 다른 많은 JSONObject가 있습니다. 요소를 통해 읽을 때 해당 요소를 읽습니다. 구현 된 Parcelable을 가진 별도의 클래스에있는 값. 여기 내 Parcelable 클래스는 내가 더 설명하기 전에 어떻게 생겼는지입니다 :Parcelable 클래스의 배열 목록에 Android json 객체

public class ItemsInfo implements Parcelable { 

    public int itemId; 
    public String itemName, itemIcon; 

    @Override 
    public int describeContents() { 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeString(itemName); 
     dest.writeString(itemIcon); 
     dest.writeInt(itemId); 
    } 

    public static final Parcelable.Creator<ItemsInfo > CREATOR = new Parcelable.Creator<ItemsInfo >() { 

     @Override 
     public ItemsInfo createFromParcel(Parcel source) { 
      ItemsInfo ei = new ItemsInfo(); 
      ei.itemName = source.readString(); 
      ei.itemIcon = source.readString(); 
      ei.itemId = source.readInt(); 
      return ei; 
     } 

     @Override 
     public ItemsInfo [] newArray(int size) { 
      return new ItemsInfo [size]; 
     } 
    }; 
} 

나는 그래서 나중에는 문자열 itemName에의 ArrayList를로를 작성, 유사한 요소가 된 JSONObject를 통해 읽어마다입니다 원하는 itemName1, itemName2, itemName3과 같은 모든 다른 항목에 대해 별도의 문자열과 정수를 작성할 필요가 없도록 인덱스 나 무언가로만 주어진 항목에 액세스 할 수 있습니다 ..... 가능합니까?

답변

1

droidQuery을 사용하여 JSON 구문 분석을 단순화 할 수 있습니다. 당신의 JSONObject키 - 값에 매핑을 변환하려면, 당신은이를 사용할 수 있습니다

List<String> items = new ArrayList<String>();//this will contain your JSONObject strings 
Map<String, ?> data = null; 
try { 
    JSONObject json;//this references your JSONObject 
    data = $.map(json); 

} catch (Throwable t) { 
    Log.e("JSON", "Malformed JSON Object"); 
} 

그런 다음, 루프 각각의 요소를 통해, 그냥이 수행하여 List항목 지금

if (data != null) { 
    for (Map.Entry<String, ?> entry : data.entrySet()) { 
     items.add(entry.value().toString()); 
    } 
} 

JSONObejct의 문자열 표현으로 채워집니다. 이 JSON을 구문 분석 할 경우 나중에 바로 수행

이 달러 기호를 무엇
int index = 2;//the index of the JSONObject you want 
try { 
    Map<String, ?> data = $.map(new JSONObject(items.get(2))); 
    //now iterate the map 
} catch (Throwable t) { 
    t.printStackTrace();//something wrong with your JSON string 
} 
+0

, 나는 БориславМинчев @ 자바 –

+0

일하고, 그 *를 모델로 한 * droidQuery * 라이브러리의 일부입니다 자바 스크립트 * 라이브러리 * jQuery *. * droidQuery *는 모두 순수한 * Android Java *입니다. 라이브러리 * jar *를 * libs * 폴더에 추가 한 다음 * self.philbrown.droidQuery를 가져 오기만하면됩니다. **; – Phil