2013-12-11 124 views
0

我是JSON Web服務的新手。我想將簡單的JSON結構轉換爲Java String。雖然我提到了很多網站,但它給我增加了更多的困惑。我正在使用GSON解析,但alwasy得到澤西島 - JSON到Java字符串

「java.lang.IllegalStateException:這不是JSON數組。

請幫助我解決問題。

JSON數據:{"data1":"100","data2":"hello"}

Java代碼:

private void getPostMessage(String msg) { 
     try {  
       EmployeeBean emp; 
       String json; 

      Client client = Client.create(); 
      WebResource webResource = client.resource("http://localhost:8080/JSON_EMP_Serv/rest/server/post/"); 

      ClientResponse response = webResource.type("application/json").post(ClientResponse.class,msg); 
      if (response.getStatus() != 201) { 
       throw new RuntimeException("Failed : HTTP error code : " + response.getStatus()); 
      } 

      String output = response.getEntity(String.class); 
      System.out.println("\n============get POST Message Response============"); 
      System.out.println(output); 

      /******* JSON PARSER **********/ 


      Gson gson = new Gson(); 
      JsonParser parser = new JsonParser(); 
      JsonArray Jarray = parser.parse(output).getAsJsonArray(); 

      ArrayList<EmployeeBean> lcs = new ArrayList<EmployeeBean>(); 

     for(JsonElement obj : Jarray) 
      { 
       emp = gson.fromJson(obj,EmployeeBean.class); 

       lcs.add(emp); 

      } 
      int length=lcs.size(); 
      System.out.println("ARRAY LENGTH"+length); 
      for(int i=0;i<length;i++) 
      { 
       System.out.println(lcs.get(i)+"\n"); 
      } 

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

引用EmployeeBean類:

package com.pats.client.bean; 

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

import com.google.gson.annotations.SerializedName; 

    public class EmployeeBean { 


    private String data1= null; 
    private String data2 = null; 

    public EmployeeBean(String data1,String data2) 
    { 

     this.data1=data1; 
     this.data2=data2; 
    } 

    public String getData1() 
    { return data1; } 
    public String getData2() 
    { return data2; } 
    public void setData1(String data1) 
    { 
     this.data1=data1; 
    } 
    public void setData2(String data2) 
    { 
     this.data2=data2; 
    } 
    @Override 
    public String toString() { 
     //return "[data1=" + data1 + ", data2=" + data2 + "]"; 

     return " DATA-1 : " + this.data1 + "DATA-2 : " + this.data2; 
    } 

} 

回答

3

的一點是,很顯然,你的數據不是一個JSON陣列。

{"data1":"100","data2":"hello"} 

它,而是一個JSON對象,但您要分析它,並得到一個JsonArray。你可以改變它並使用getAsJsonObject()來代替,但是從你的代碼中我認爲這是你的錯誤起始數據。我想你應該有一批員工,所以正確的數據應該是這樣的:

[{"data1":"100","data2":"hello"}] 
+1

獲得的經驗:相信你得到的錯誤!它在這種情況下甚至是很好的人類可讀的。 – Gimby