2013-12-11 3 views
0

저는 JSON 웹 서비스를 처음 사용합니다. 아래 간단한 JSON 구조를 Java String으로 변환하려고합니다. 비록 내가 많은 사이트를 언급했지만, 여전히 그것은 나에게 더 많은 혼란을 더한다. 구문 분석을 위해 GSON을 사용하고 있습니다. 그러나 alwasy를 사용하고 있습니다.저지 - Json에서 java 문자열

"java.lang.IllegalStateException : 이것은 JSON Array가 아닙니다."

문제를 해결하려면 도와주세요.

JSON 데이터 : {"data1":"100","data2":"hello"}

자바 코드 :

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 클래스 : 요점은 데이터가 JSON 배열 아님을 분명히한다

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

.

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

대신, JSON 객체입니다 그것은,하지만 당신은 그것을 분석하고 JsonArray를 얻기 위해 노력하고 있습니다. 당신은 이것을 바꿀 수 있고 대신 getAsJsonObject()을 사용할 수 있습니다. 그러나 코드에서 잘못된 시작 데이터라고 생각합니다. 올바른 데이터는 다음과 같아야합니다.

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

학습 한 내용 : 오류가 발생했다고 생각하십시오! 이 경우에는 사람이 읽을 수있는 것이 좋습니다. – Gimby