2016-02-11 61 views
0

我在我的REST的Java服務的以下功能在GlassFish服務器上運行的名字:REST - 從寧靜的Java服務的JSON數組定義

serviceTest.java

@Path("/servicetest") 
public class serviceTest{ 
    @GET 
    @Path("/findall") 
    @Produces(MediaType.APPLICATION_JSON) 
    public List<Person> findAll(){ 
     List <Person> result = new ArrayList<>(); 
     result.add(new Person("1", "Charlie"); 
     result.add(new Person("2", "Mary"); 
     return result; 
     } 
    } 

而且我已經定義一類:

person.java

public class person { 

    private String id; 
    private String name; 

    public person(String id, String name) { 
     this.id = id; 
     this.name = name; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

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

當我打電話從客戶端或Web瀏覽器的功能findAll(),我得到下面的JSON對象格式爲:

[ 
    { 
     "id": "1", 
     "name": "Charlie"  
    }, 

    { 
     "id": "2", 
     "name": "Mary" 
    } 
] 

但我需要確定一個名稱JSON數組的東西像這樣:

{"person": 
    [ 
     { 
      "id": "1", 
      "name": "Charlie"  
     }, 

     { 
      "id": "2", 
      "name": "Mary" 
     } 
    ] 
} 

我該怎麼做...?與單場

public Map<String,List<Person>> findAll(){ 
    List <Person> list = new ArrayList<>(); 
    list.add(new Person("1", "Charlie"); 
    list.add(new Person("2", "Mary"); 
    LinkedHashMap<String,List<Person>> map = new LinkedHashMap<>(); 
    map.put("person", list); 
    return map; 
} 

回答

2

您可以在地圖包住人名單

public class PersonResponse { 

    private List<Person> person = new ArrayList<Person>(); 

    public PersonResponse(List<Person> person) { 
     this.person = person; 
    } 

} 

,改變你的REST方法到:

public PersonResponse findAll(){ 
    List <Person> result = new ArrayList<>(); 
    result.add(new Person("1", "Charlie"); 
    result.add(new Person("2", "Mary"); 
    return new PersonResponse(result); 
    } 
} 
+0

對不起,但現在我收到此錯誤:HTTP狀態500 - 內部服務器錯誤。該服務器遇到了一個內部錯誤,阻止它履行這個請求。' – CyborgNinja23

+1

@ CyborgNinja23搜索堆棧跟蹤的日誌文件 – wero

1

包裹List<Person>的一類:在此先感謝...

+0

由於某種原因,當我將它包裝在這個類中時,它給了我'狀態500 - 內部服務器錯誤「 – CyborgNinja23