2013-12-11 70 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