2017-05-30 10 views
-1

私はGsonを使用して応答から値を解析しています。私の応答は、(郵便配達で)次のようになります。Ysony-MM-ddTHH:mm:SSをGson Retrofitで日付に変換できません

{ 
    "payLoad": { 
    "totalItems": 1, 
    "totalPages": 1, 
    "items": [ 
    { 
     "id": "f13e9f94fbb144d2956326f6c50f4d29", 
     "rechargeStatus": "PENDING", 
     "dateOfRequest": "2017-05-30T11:29:33", 
     "amount": 1, 
     "category": "Electricity", 
     "operator": "Electricity Limited", 
     "whereToRecharge": "212323232" 
    } 
    ] 
    }, 
    "success": true, 
    "timestamp": "2017-05-30T13:08:18" 
} 

私はASの私の応答を記録すると、私が持っている次のように私はすでに日付形式のためGsonBuilderを追加した

Fetch Recharge Payload : {totalItems=1.0, totalPages=1.0, items= 
[{uuid=f12e9f94fbb144d2956326f6c50f4d29, rechargeStatus=PENDING, 
dateOfRequest=2017-05-30T11:29:33, amount=1.0, category=Electricity, 
operator=Electricity Limited, whereToRecharge=212323232}]} 

hereをsugesstedとして):

Gson gson = new GsonBuilder() 
      .setDateFormat("yyyy-MM-dd'T'HH:mm:ss") 
      .create(); 

解析データは、次のようになります。

私が手

エラーは次のとおりです。

com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: 
Unterminated object at line 1 column 94 path $[0].dateOfRequest 

主な質問は、日付を解析することです。もう少し設定を追加する必要がありますか?

その他の質問: - なぜ整数が倍精度に変換されるのですか? - 文字列の値から二重引用符が削除されるのはなぜですか?

+0

は、このリンクは役に立つかもしれません私の完全な例をご覧ください –

+0

https://stackoverflow.com/質問/ 18473011/json-string-to-java-util-dateからのretrofit-gson-serialize-date –

+0

jsonあなたのログキャッチでは、それは悪いですjson –

答えて

0

あなたのやり方でこの例を実装してください。

のGradle

compile 'com.squareup.retrofit:retrofit:2.0.0-beta2' 

インタフェース

public interface ServiceInterface { 
@GET(HttpConstants.USERDATAJSON) 
    Call<ListData>taskData(@Query("method")String method,@Query("stdID")int stdID); 
} 

サービスクラス

public class ServiceClass { 
    static ServiceInterface serviceInterface; 
// public static final String baseUrl= HttpConstants.BASE_URL_GEONAME; 
    public static final String baseUrl= HttpConstants.baseUrl; 

    public static ServiceInterface connection(){ 
     if(serviceInterface==null){ 
      HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); 
      interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 
      OkHttpClient client = new OkHttpClient(); 
      client.interceptors().add(new Interceptor() { 
       @Override 
       public Response intercept(Chain chain) throws IOException { 
        Response response=chain.proceed(chain.request()); 
        return response; 
       } 
      }); 
      Retrofit retrofit = new Retrofit.Builder() 
        .client(client) 
        .addConverterFactory(GsonConverterFactory.create()) 
        .baseUrl(baseUrl) 
        .build(); 
      serviceInterface=retrofit.create(ServiceInterface.class); 
     } 
     return serviceInterface; 
    } 
} 

使用方法の詳細については言及

public void getTaskData(){ 
    ServiceInterface serviceInterface=ServiceClass.connection(); 
    Call<ListData> call=serviceInterface.taskData("getAllUsersSimple",0); 
    call.enqueue(new Callback<ListData>() { 
     @Override 
     public void onResponse(Response<ListData> response, Retrofit retrofit) { 
      Log.v("@@@Response",""+response.toString()); 
      if(response.isSuccess()){ 
       listData=response.body(); 
       dataList=listData.getData(); 
       printStudentDetails(dataList); 

      } 
     } 

     @Override 
     public void onFailure(Throwable t) { 
      Log.v("@@@Failure"," Message"+t.getMessage()); 
     } 
    }); 
} 

public void printStudentDetails(List<DataPojo> list){ 
    Log.v("@@@WWe","Student List"); 
    for (DataPojo dataPojo:list){ 
     Log.d("Student ID ",dataPojo.getUserId()); 
     Log.d("Student Name ",dataPojo.getUserName()); 
     Log.d("Student Age ",dataPojo.getUserAge()); 
    } 
} 

POJO

public class ListData { 

    @SerializedName("data") 
    @Expose 
    private List<DataPojo> data = null; 
    @SerializedName("code") 
    @Expose 
    private Integer code; 
    @SerializedName("message") 
    @Expose 
    private String message; 

    public List<DataPojo> getData() { 
     return data; 
    } 

    public void setData(List<DataPojo> data) { 
     this.data = data; 
    } 

    public Integer getCode() { 
     return code; 
    } 

    public void setCode(Integer code) { 
     this.code = code; 
    } 

    public String getMessage() { 
     return message; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 

} 

public class DataPojo { 

    @SerializedName("user_id") 
    @Expose 
    private String userId; 
    @SerializedName("user_name") 
    @Expose 
    private String userName; 
    @SerializedName("user_age") 
    @Expose 
    private String userAge; 

    public String getUserId() { 
     return userId; 
    } 

    public void setUserId(String userId) { 
     this.userId = userId; 
    } 

    public String getUserName() { 
     return userName; 
    } 

    public void setUserName(String userName) { 
     this.userName = userName; 
    } 

    public String getUserAge() { 
     return userAge; 
    } 

    public void setUserAge(String userAge) { 
     this.userAge = userAge; 
    } 

} 

https://github.com/pratikvyas1991/NetworkingExample/tree/master/app

+0

@ Shubham A.任意の進捗状況 –

関連する問題