2014-04-02 2 views
3

Android에서 Gson 라이브러리를 사용하고 있습니다. json 형식으로 웹 서비스에서 일부 데이터를 검색합니다.Gson의 비 순차 목록 비 정렬

Gson gson = new GsonBuilder().create(); 
ClassA obj = gson.fromJson(returnFromServer.toString(), ClassA.class); 

클래스를 ClassA는 다음과 같습니다 :

public class ClassA{ 
    private String id; 
    private List<ClassB> myList; 
} 

그래서 나는 OBJ 내부 사용자 지정 개체의 목록을

그래서 나는 다음을 수행하여 데이터를 얻을.

질문 : 목록의 순서가 json 파일의 요소 순서와 같은지 확인할 수 있습니까? 그렇지 않은 경우 Gson 내부에 json 파일의 동일한 순서를 유지할 수있는 메커니즘이 있습니까?

참고 : 이전의 모든 시도는 json 파일과 동일한 순서로 정렬 된 목록을 생성합니다.

+0

imho 순서가 동일합니다, 내가 highsore 목록에 사용하지만, 목록을 정렬하는 데 사용할 수있는 지시자를 listobjects에 전달할 수 있는지 100 % 확신해야합니다. –

답변

0

LinkedList 구현을 사용하여 정렬 순서를 유지할 수 있지만 간단한 프로그램을 만들었지 만 ArrayList에서도 순서가 유지됩니다. 당신은 내가 ClassB.java

package com.zack.demo; 

public class ClassB { 

    private String name; 

    private int age; 

    private String gender; 


    public ClassB(String name, int age, String gender) 
    { 
     this.name = name; 
     this.age = age; 
     this.gender = gender; 

    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public int getAge() { 
     return age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 

    public String getGender() { 
     return gender; 
    } 

    public void setGender(String gender) { 
     this.gender = gender; 
    } 

} 

ClassA.java

package com.zack.demo; 

import java.util.List; 

public class ClassA { 

    private String id; 
    private List<ClassB> myList; 

    public ClassA(String id, List<ClassB> myList) 
    { 
     this.id = id; 
     this.myList = myList; 
    } 

    public String getId() { 
     return id; 
    } 
    public void setId(String id) { 
     this.id = id; 
    } 
    public List<ClassB> getMyList() { 
     return myList; 
    } 
    public void setMyList(List<ClassB> myList) { 
     this.myList = myList; 
    } 



} 

목록 순서에 대한 샘플 테스트 프로그램을 만들어,

를 아래의 코드를 확인할 수 있습니다

package com.zack.demo; 

import java.util.ArrayList; 
import java.util.LinkedList; 
import java.util.List; 

import com.google.gson.Gson; 

public class GsonTest { 

    public static void main(String[] args) { 

     Gson gson = new Gson(); 


     ClassB o2 = new ClassB("Test2", 20, "Male"); 
     ClassB o1 = new ClassB("Test1", 10, "Male"); 


     List<ClassB> ls = new LinkedList<ClassB>(); 

     ls.add(o2); 
     ls.add(o1); 

     ClassA a1 = new ClassA("T1", ls); 

     String result = gson.toJson(a1, a1.getClass()); 

     System.out.println(result); 

     ClassA obj = gson.fromJson(result.toString(), ClassA.class); 

     System.out.println(gson.toJson(obj, obj.getClass())); 




    } 

} 

결과

{"id":"T1","myList":[{"name":"Test2","age":20,"gender":"Male"},{"name":"Test1","age":10,"gender":"Male"}]} 
{"id":"T1","myList":[{"name":"Test2","age":20,"gender":"Male"},{"name":"Test1","age":10,"gender":"Male"}]}