2013-06-18 2 views
-3

json 문자열이 있습니다. Gson을 사용하여이 문자열을 클래스에 deserialize하는 방법은 무엇입니까?JSON - 클래스에 다중 객체 deserialize

이것은 여러 클래스 json 문자열입니다.

  • 응답,
  • 상태,
  • OrderItems에
  • 단위
  • 지불
  • ADRESS
  • TreeItems가 setter를 가지고

, 그리고 : 나는이 클래스를 생성 getters 속성 문제는 예제에서 반환 된 null입니다. List에는 null을 반환하는 getStatus 메서드가 있습니다.

는이 문자열 클래스에 직렬화하는 방법을 나에게 예를 작성할 수

{ 
    "result": { 
    "userid": 5, 
    "type": 1, 
    "response": [ 
     { 
     "id": "390", 
     "created_at": "2012-05-27 00:00:00", 
     "updated_at": "2012-05-27 00:00:00", 
     "incident": "2", 
     "price_user": "5.00", 
     "userid": "5", 
     "realization_asap": "0", 
     "realization_date": "2013-06-12", 
     "realization_time_range": "18-20", 
     "Status": { 
      "id": "7", 
      "name": "in progress", 
      "dsc": "STATUS_ASSIGNED_user" 
     }, 
     "OrderItems": [ 
      { 
      "id": "4", 
      "distance": "5", 
      "price": "5.00", 
      "problem_dsc": "Test", 
      "custom": "1", 
      "Unit": { 
       "id": "12", 
       "name": "my printer", 
       "serial_no": "", 
       "dsc": "", 
       "model": "hp " 
      }, 
      "TreeItem": { 
       "id": "3", 
       "title": "Hp managament tool" 
      }, 
      "Problems": [ 
       { 
       "id": "252", 
       "name": "Configure printer", 
       "dsc": "" 
       } 
      ] 
      } 
     ], 
     "Address": { 
      "id": "1084", 
      "city": "x", 
      "street": "y", 
      "lat": "4", 
      "lng": "6" 
     }, 
     "Payments": [ 
      { 
      "id": "3", 
      "price": "5.00", 
      "status": "2" 
      } 
     ] 
     }, 
     { 
     "id": "401", 
     "created_at": "2012-05-27 00:00:00", 
     "updated_at": "2012-05-27 00:00:00", 
     "price_user": "3.00", 
     "userid": "52", 
     "realization_asap": "0", 
     "realization_date": "2013-06-17", 
     "realization_time_range": "custom", 
     "realization_custom_time": "11:56:00", 
     "Status": { 
      "id": "7", 
      "name": "in progress", 
      "dsc": "STATUS_ASSIGNED_user" 
     }, 
     "OrderItems": [ 
      { 
      "id": "527", 
      "distance": "5", 
      "price": "4.00", 
      "problem_dsc": "", 
      "Unit": { 
       "id": "34", 
       "name": "Canon printer", 
       "serial_no": "abcd", 
       "dsc": "sdf", 
       "model": "test123", 
       "Manufacturer": { 
       "id": "2", 
       "name": "Canon" 
       } 
      }, 
      "TreeItem": { 
       "id": "373", 
       "title": "System Canon" 
      }, 
      "Problems": [ 
      { 
       "id": "258", 
       "name": "tesrt", 
       "dsc": "" 
      }, 
      { 
       "id": "259", 
       "name": "test", 
       "dsc": "" 
      }, 
      { 
       "id": "260", 
       "name": "test", 
       "dsc": "" 
      } 
      ] 
      } 
     ], 
     "Address": { 
      "id": "3", 
      "city": "a", 
      "street": "b", 
      "lat": "12", 
      "lng": "58" 
     }, 
     "Payments": [ 
      { 
      "id": "2", 
      "price": "345", 
      "status": "1" 
      } 
     ] 
     }, 
    ], 
    "date": "2013-06-01 00:00:00" 
    }, 
    "id": "2013-06-01 00:00:00" 
} 

내 클래스 :

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

import org.codehaus.jackson.annotate.JsonAutoDetect; 
import org.codehaus.jackson.annotate.JsonCreator; 
import org.codehaus.jackson.annotate.JsonIgnoreProperties; 
import org.codehaus.jackson.annotate.JsonProperty; 

public class myResponse { 

    private String id; 

    public String getId() { 
     return id; 
    } 

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

    public class Result { 

     private int userid; 
     private String date; 
     private int type; 

     public int getuserid() { 
      return userid; 
     } 

     public void setuserid(int userid) { 
      this.userid = userid; 
     } 

     public String getDate() { 
      return date; 
     } 

     public void setDate(String date) { 
      this.date = date; 
     } 

     public int getType() { 
      return type; 
     } 

     public void setType(int type) { 
      this.type = type; 
     } 

     private List<Response> response = new ArrayList<Response>(); 

     public List<Response> getResponse() { 
      return response; 
     } 

     public void setResponse(List<Response> response) { 
      this.response = response; 
     } 
    } 

    public class Response { 

     private int id; 
     private String comments_dsc; 
     private String created_at; 
     private String updated_at; 
     private int incident; 
     private String price_client; 
     private String price_serviceman; 
     private int serviceman_id; 
     private String realization_asap; 
     private String realization_date; 
     private String realization_time_range; 
     private String realization_custom_time; 
     private String realization_finished_at; 

     public int getId() { 
      return id; 
     } 

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

     public String getCommentsDsc() { 
      return comments_dsc; 
     } 

     public void setCommentsDsc(String comments_dsc) { 
      this.comments_dsc = comments_dsc; 
     } 

     public String getCreatedAt() { 
      return created_at; 
     } 

     public void setCreatedAt(String created_at) { 
      this.created_at = created_at; 
     } 

     public String getUpdatedAt() { 
      return updated_at; 
     } 

     public void setUpdatedAt(String updated_at) { 
      this.updated_at = updated_at; 
     } 

     public int getIncident() { 
      return incident; 
     } 

     public void setIncident(int incident) { 
      this.incident = incident; 
     } 

     public String getPrizeClient() { 
      return price_client; 
     } 

     public void setPrizeClient(String price_client) { 
      this.price_client = price_client; 
     } 

     public String getPriceServiceman() { 
      return price_serviceman; 
     } 

     public void setPriceServiceman(String price_serviceman) { 
      this.price_serviceman = price_serviceman; 
     } 

     public int getServciemanid() { 
      return serviceman_id; 
     } 

     public void setuserid(int serviceman_id) { 
      this.serviceman_id = serviceman_id; 
     } 

     public String getRealizationAsap() { 
      return realization_asap; 
     } 

     public void setRealizationAsap(String realization_asap) { 
      this.realization_asap = realization_asap; 
     } 

     public String getRealizationDate() { 
      return realization_date; 
     } 

     public void setRealizationDate(String realization_date) { 
      this.realization_date = realization_date; 
     } 

     public String getRealizationCustomTime() { 
      return realization_custom_time; 
     } 

     public void setRealizationCustomTime(String realization_custom_time) { 
      this.realization_custom_time = realization_custom_time; 
     } 

     public String getRealizationTimeRange() { 
      return realization_time_range; 
     } 

     public void setRealizationTimeRange(String realization_time_range) { 
      this.realization_time_range = realization_time_range; 
     } 

     public String getRealizationFinishedAt() { 
      return realization_finished_at; 
     } 

     public void setRealizationFinishedAt(String realization_finished_at) { 
      this.realization_finished_at = realization_finished_at; 
     } 

    } 

    public class Status { 

     private int id; 
     private String name; 
     private String dsc; 

     public Status(int id, String name, String dsc) { 
      this.id = id; 
      this.name = name; 
      this.dsc = dsc; 
     } 

     public int getId() { 
      return id; 
     } 

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

     public String getName() { 
      return name; 
     } 

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

     public String getDsc() { 
      return dsc; 
     } 

     public void setDsc(String dsc) { 
      this.dsc = dsc; 
     } 

    } 

    public class OrderItems { 
     private int id; 
     private String distance; 
     private String price; 
     private String problem_dsc; 
     private String custom; 
     private String active; 

     public int getId() { 
      return id; 
     } 

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

     public String getDistance() { 
      return distance; 
     } 

     public void setDistance(String distance) { 
      this.distance = distance; 
     } 

     public String getPrice() { 
      return price; 
     } 

     public void setPrice(String price) { 
      this.price = price; 
     } 

     public String getProblemDsc() { 
      return problem_dsc; 
     } 

     public void setProblemDsc(String problem_dsc) { 
      this.problem_dsc = problem_dsc; 
     } 

     public String getCustom() { 
      return custom; 
     } 

     public void setCustom(String custom) { 
      this.custom = custom; 
     } 

     public String getActive() { 
      return active; 
     } 

     public void setActive(String active) { 
      this.active = active; 
     } 
    } 

    public class TreeItems { 
     private int id; 
     private String title; 

     public int getId() { 
      return id; 
     } 

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

     public String getTitle() { 
      return title; 
     } 

     public void setTitle(String title) { 
      this.title = title; 
     } 
    } 

    public class Unit { 
     private int id; 
     private String name; 
     private String serial_no; 
     private String dsc; 
     private String model; 

     public int getId() { 
      return id; 
     } 

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

     public String getName() { 
      return name; 
     } 

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

     public String getSerialNo() { 
      return serial_no; 
     } 

     public void setSerialNo(String serial_no) { 
      this.serial_no = serial_no; 
     } 

     public String getDsc() { 
      return dsc; 
     } 

     public void setDsc(String dsc) { 
      this.dsc = dsc; 
     } 

     public String getModel() { 
      return model; 
     } 

     public void setModel(String model) { 
      this.model = model; 
     } 
    } 

    public class Manufacturer { 
     private int id; 
     private String name; 

     public int getId() { 
      return id; 
     } 

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

     public String getName() { 
      return name; 
     } 

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

    } 

    public class Problems { 
     private int id; 
     private String name; 
     private String dsc; 

     public int getId() { 
      return id; 
     } 

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

     public String getName() { 
      return name; 
     } 

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

     public String getDsc() { 
      return dsc; 
     } 

     public void setDsc(String dsc) { 
      this.dsc = dsc; 
     } 
    } 

    public class Address { 
     private int id; 
     private String city; 
     private String street; 
     private String lat; 
     private String lng; 

     public int getId() { 
      return id; 
     } 

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

     public String getCity() { 
      return city; 
     } 

     public void setCity(String city) { 
      this.city = city; 
     } 

     public String getStreet() { 
      return street; 
     } 

     public void setStreet(String street) { 
      this.street = street; 
     } 

     public String getLat() { 
      return lat; 
     } 

     public void setLat(String lat) { 
      this.lat = lat; 
     } 

     public String getLng() { 
      return lng; 
     } 

     public void setLng(String lng) { 
      this.lng = lng; 
     } 
    } 

    public class Payments { 
     private int id; 
     private String price; 
     private String status; 

     public int getId() { 
      return id; 
     } 

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

     public String getPrice() { 
      return price; 
     } 

     public void setPrice(String price) { 
      this.price = price; 
     } 

     public String getStatus() { 
      return status; 
     } 

     public void setStatusg(String lng) { 
     } 
    } 
} 

내 코드 :

Gson gson = new Gson(); 
      CServicesResponse cgs = gson.fromJson(s, 
        CServicesResponse.class); 


CServicesResponse.Result cgsr = cgs.getResult(); 

J 쓴 :

GSON gson1 = 새로운 Gson(); 응답 코드에

String s2 = gson1.toJson(cgsr.getResponse()); 
    JsonParser jp = new JsonParser(); 
    JsonElement je = jp.parse(s2); 
    String prettyJsonString = gson.toJson(je); 
    System.out.println(prettyJsonString); 

은, JA는 proporties을 가지고, 내가

[ 
    { 
     "id": 390, 
     "created_at": "2013-06-12 11:55:51", 
     "updated_at": "2013-06-13 12:19:21", 
     "incident": 2, 
     "price_user": "32.00", 
     "user_id": 52, 
     "realization_asap": "0", 
     "realization_date": "2013-06-12", 
     "realization_time_range": "18-20" 
    }, 
    { 
     "id": 401, 
     "created_at": "2013-06-13 11:38:52", 
     "updated_at": "2013-06-17 01:10:05", 
     "incident": 0, 
     "price_user": "323.00", 
     "user_id": 52, 
     "realization_asap": "0", 
     "realization_date": "2013-06-17", 
     "realization_time_range": "custom", 
     "realization_custom_time": "11:56:00" 
    }, 
    { 
     "id": 399, 
     "created_at": "2013-06-13 11:03:05", 
     "updated_at": "2013-06-13 11:43:29", 
     "incident": 0, 
     "price_client": "290.00", 
     "price_user": "290.00", 
     "user_id": 52, 
     "realization_asap": "1", 
     "realization_finished_at": "2013-06-13 11:43:29" 
    } 
] 

어떻게 내 수업에 JSON 문자열을 deserialzie 수 있습니다 ... 클래스 상태, OrderItems에 표시되지 않은?

+2

시도를 질문을 바꿔 지금까지 우리에게 코드를 표시합니다. – PeterMmm

+0

지금까지 해보신 것은 무엇입니까? 코드 및 오류 메시지를 공유하십시오. 그러면 우리를 도와주는 것이 훨씬 쉽습니다. 완전한 솔루션을 코딩하는 데 도움을 줄 수는 없습니다. – David

+1

오, 한 가지 더, JSON 데이터를 구문 분석하고 유효성을 검사하려고했지만 유효하지 않습니다. 먼저 수정! – David

답변

0

시도는 다음과 같이 상태 클래스에 기본 (인수 없음) 생성자를 추가합니다 :

public class Status { 

     private int id; 
     private String name; 
     private String dsc; 

     public Status() { 
     } 
+0

Gson gson = new Gson(); \t \t CGeServicesResponse CGS gson.fromJson = (S, \t \t \t \t CGetServicemanServicesResponse.class); CGetServicesResponse.Result cgsr = cgs.getResult(); J 작성 : Gson gson1 = new Gson(); \t \t \t \t 문자열 s2 = gson1.toJson (cgsr.getResponse()); \t \t JsonParser jp = new JsonParser(); \t \t JsonElement je = jp.parse (s2); \t \t 문자열 prettyJsonString = gson.toJson (je); \t \t System.out.println (prettyJsonString); 응답 코드에 ja 만 비례합니다. Status, OrderItems ... json 문자열을 내 클래스에 deserialzie로 변환 할 수 있습니까? – user2495884

+0

여기에 읽기 : https://sites.google.com/site/gson/gson-user-guide#TOC-Serializing-and-Deserializing-Collection-with-Objects-of-Arbitrary-Types – PeterMmm