2011-08-25 7 views
0

gson으로 JSON을 비 직렬화하는 데 도움이 필요합니다.Gson 비 직렬화 문제

{ 
      "result":{ 
       "grid":{ 
       "javaClass":"com.company.collections.GridSummary", 
       "page":{ 
        "list":[ 
         { 
          "javaClass":"com.company.services.issue.IssueSummary", 
          "sprintName":"", 
          "assignedTo":"dannyd", 
          "numChildren":-2147483648, 
          "startDate":{ 
          "javaClass":"java.util.Date", 
          "time":1.302881465e12 
          }, 
          "title":"QA work done on 1895747 - DD", 
          "hasClickPath":false, 
          "sprintId":"", 
          "productName":"", 
          "ownerId":"1895747", 
          "customFollowUp":"888-888-5555", 
          "assigneeFirstName":"Danny", 
          "lastActivityDate":{ 
          "javaClass":"java.util.Date", 
          "time":1.302888278e12 
          }, 
          "id":"1895885", 
          "global":false, 
          "timeSpent":0, 
          "assignee":{ 
          "javaClass":"com.company.services.contact.ContactSummary", 
          "isSem":false, 
          "subType":0, 
          "doNotCampaign":false, 
          "status":0, 
          "rating":0, 
          "firstName":"Danny", 
          "salesProcess":{ 
           "editable":false, 
           "javaClass":"com.company.modules.salesrules.SalesProcessSummary", 
           "rules":{ 
            "list":[ 

            ], 
            "javaClass":"java.util.ArrayList" 
           } 
          }, 
          "lastName":"D", 
          "doNotEmail":false, 
          "doNotCall":false, 
          "stage":0, 
          "isRemoved":false 
          }, 
          "priority":3, 
          "jiraIdRemoved":false, 
          "read":false, 
          "productPlatform":"", 
          "filesAttached":-2147483648, 
          "parentId":"305599", 
          "type":72, 
          "productId":"", 
          "createdBy":"dannyd", 
          "status":2, 
          "productAppGroup":"", 
          "reporterId":"c8035a744046382000f0474c07d7ed34", 
          "jiraId":"", 
          "projectId":"", 
          "removed":false, 
          "assigneeLastName":"D", 
          "description":"", 
          "clientId":"CLIENTID", 
          "jiraSprintName":"", 
          "projectName":"", 
          "customFollowUpType":"Other" 
         } 
        ], 
        "javaClass":"java.util.ArrayList" 
       }, 
       "totalCount":1183 
       }, 
       "javaClass":"com.company.blocks.issues.commands.SearchIssues", 
       "accountPlatform":"7.0" 
      } 
     } 

이 코드 :

나는이 JSON을

import com.google.gson.Gson; 
    import java.io.BufferedReader; 
    import java.io.FileNotFoundException; 
    import java.io.FileReader; 
    import java.util.ArrayList; 


    /** 
    * 
    * @author Danny 
    */ 
    public class Deserialize { 

     public void main() throws FileNotFoundException { 
      BufferedReader json = new BufferedReader(new FileReader("C:\\Users\\dannyd\\Desktop\\jsonResults.txt")); 
      Gson gson = new Gson(); 
      MyContainer container = gson.fromJson(json, MyContainer.class); 
     } 
    } 

    class MyContainer { 

     private Result result = new Result(); 

     //getters & setters 
    } 

    class Result { 

     private Grid grid = new Grid(); 
     private String javaClass; 
     private String accountPlatform; 

     //getters & setters 
    } 

    class Grid { 

     private String javaClass; 
     private Page page = new Page(); 
     private Integer totalCount; 

     //getters & setters 
    } 

    class Page { 

     private ArrayList<PageList> list; 
     private String JavaClass; 

     //getters & setters 
    } 

    class PageList { 

     private String javaClass; 
     private String sprintName; 
     private String assignedTo; 
     private Integer numChildren; 
     private D_DateObject startDate = new D_DateObject(); 
     private String title; 
     private Boolean hasClickPath; 
     private String sprintId; 
     private String productName; 
     private String ownerId; 
     private String customFollowUp; 
     private String assigneeFirstName; 
     private D_DateObject lastActivityDate = new D_DateObject(); 
     private String id; 
     private Boolean global; 
     private Integer timeSpent; 
     private Assignee assignee = new Assignee(); 
     private Integer priority; 
     private Boolean jiraIdRemoved; 
     private Boolean read; 
     private String productPlatform; 
     private Integer filesAttached; 
     private String parentId; 
     private Integer type; 
     private String productId; 
     private String createdBy; 
     private Integer status; 
     private String productAppGroup; 
     private String reporterId; 
     private String jiraId; 
     private String projectId; 
     private Boolean removed; 
     private String assigneeLastName; 
     private String description; 
     private String clientId; 
     private String jiraSprintName; 
     private String projectName; 
     private String customFollowUpType; 

     //getters & setters 
    } 

    class D_DateObject { 

     private String javaClass; 
     private Integer time; 

     //getters & setters 
    } 

    class Assignee { 

     private String javaClass; 
     private Boolean isSem; 
     private Integer subType; 
     private Boolean doNotCampaign; 
     private Integer status; 
     private Integer rating; 
     private String firstName; 
     private SalesProcess salesProcess = new SalesProcess(); 
     private String lastName; 
     private Boolean doNotEmail; 
     private Boolean doNotCall; 
     private Integer stage; 
     private Boolean isRemoved; 

     //getters & setters 
    } 

    class SalesProcess { 

     private Boolean editable; 
     private String javaClass; 
     private Rules rules; 

     //getters & setters 
    } 

    class Rules { 

     private AList list = new AList(); 
     private String javaClass; 
     //getters & setters 
    } 

    class AList { 
    } 

GSON이 클래스의의 변수 중 하나를 설정하는 것입니다 그것은 비록 보이지 않는다. 내가 뭔가 잘못하고 있는거야? JSON이 다른 위치에서 검색되고 있으며 변경할 수있는 액세스 권한이 없습니다. 모든 도움을 미리 감사드립니다.

+0

위 JSON이 유효하지 않음을 확인하려고 시도하면 유효하지 않은 것으로 나타납니다 - 오류의 원인 일 수 있습니까? (여기에서 시도하십시오 : http://jsonformatter.curiousconcept.com/) – Joey

+0

JSON (JSON 유효성 검사 도구에 대한 링크)을 살펴 줘서 고맙습니다. 잘못 입력 했음에 틀림 없습니다 ... 지금 업데이트하고 확인했습니다. JSON은 여전히 ​​정확하지만 어떤 클래스에서도 변수를 가져올 수 없습니다. – Danny

답변

0

예제 코드를 시도해 본 결과 2 개의 오류가 발생했습니다.

  1. 귀하의 주요 방법은 정적 할 필요가 당신은 예외를 던지거나 잡을 수 그것을 D_DateObject에 지정된 시간 값이 float 형 (또는 더블)하지 정수 그래서

될 필요가

  • public static void main(String[] args) throws FileNotFoundException { 
        BufferedReader json = new BufferedReader(new FileReader("jsonResults.txt")); 
        Gson gson = new Gson(); 
        MyContainer container = gson.fromJson(json, MyContainer.class); 
    } 
    

    class D_DateObject { 
    
    private String javaClass; 
    private float time; // this needed to be changed 
    
    //getters & setters 
    } 
    

    그런 다음 객체를 사용하여 객체를 구문 분석했습니다 (gson 1.7.1 사용)

  • +0

    완벽하게 작동 해 주셔서 감사합니다! – Danny