2016-04-11 10 views
1

retrofit2経由でカスタムオブジェクトを渡そうとしていますが、私の質問はサーバーが自動的にカスタムオブジェクトをjsonに書き込むかどうか、またはそのためのPHPファイルを作成する必要があります。その間、私はサーバーに正常にポストしていますが、jsonに書き込むことはできません。retrofit2でカスタムオブジェクトを渡します

私の目的は、カスタムオブジェクトをサーバーに書き込み、カスタムオブジェクトの内容をjsonファイルに書き込むことです。ここで

は私のレトロフィットアピここ

public interface ApsaraCatalogAPI { 

    @GET("/apsaratrendz/data/apsara_json_document_v2.json") 
    Call<List<ApsaraCatalogModel>> getFeed(); 

    @POST("/apsaratrendz/data/apsara_json_orders_document.json") 
    Call<Void> setOrder(@Body OrderModel orderModel); 
} 

は私の呼び出しAPI関数が

@Override 
    public void onClick(View v) { 
     int total = 0; 
     if(v.getId()==R.id.fabButtonCart && cartlist.size()!=0) 
     { 
      // get details from shared preferences 
      OrderModel orderModel = new OrderModel(); 
      orderModel.setDate(getDate()); 
      orderModel.setName("ssdfs"); 
      orderModel.setEmail("[email protected]"); 
      orderModel.setNoofitems(String.valueOf(cartlist.size())); 
      orderModel.setOrderno("32335"); 
      orderModel.setPhone("9896566444"); 
      for(int i=0; i<cartlist.size();i++){ 
       Productdetail pd = new Productdetail(); 
       pd.getSellingprice(String.valueOf(cartlist.get(i).getSellingPrice())); 
       pd.getPid(cartlist.get(i).getEANCode()); 
       total += cartlist.get(i).getSellingPrice(); 
       orderModel.getProductdetails().add(pd); 
      } 
      // 
      // now go for insertion using retrofit 
      requestData(orderModel); 
      Toast.makeText(getApplicationContext(), "Total Price : Rs."+total+"/-", Toast.LENGTH_LONG).show(); 
     }else{ 
      Toast.makeText(getApplicationContext(), "Cart is Empty", Toast.LENGTH_LONG).show(); 
     } 

    } 

であり、ここで改造APIのための私のサービス要求である、私は新たに作成されたPOJO OrderModelクラスを渡しています。

import java.util.Map; 
     import java.util.ArrayList; 
     import java.util.HashMap; 
     import java.util.List; 
public class OrderModel { 

    private String name; 
    private String email; 
    private String phone; 
    private String orderno; 
    private String date; 
    private String noofitems; 
    private List<Productdetail> productdetails = new ArrayList<Productdetail>(); 
    private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

    /** 
    * 
    * @return 
    * The name 
    */ 
    public String getName() { 
     return name; 
    } 

    /** 
    * 
    * @param name 
    * The name 
    */ 
    public void setName(String name) { 
     this.name = name; 
    } 

    /** 
    * 
    * @return 
    * The email 
    */ 
    public String getEmail() { 
     return email; 
    } 

    /** 
    * 
    * @param email 
    * The email 
    */ 
    public void setEmail(String email) { 
     this.email = email; 
    } 

    /** 
    * 
    * @return 
    * The phone 
    */ 
    public String getPhone() { 
     return phone; 
    } 

    /** 
    * 
    * @param phone 
    * The phone 
    */ 
    public void setPhone(String phone) { 
     this.phone = phone; 
    } 

    /** 
    * 
    * @return 
    * The orderno 
    */ 
    public String getOrderno() { 
     return orderno; 
    } 

    /** 
    * 
    * @param orderno 
    * The orderno 
    */ 
    public void setOrderno(String orderno) { 
     this.orderno = orderno; 
    } 

    /** 
    * 
    * @return 
    * The date 
    */ 
    public String getDate() { 
     return date; 
    } 

    /** 
    * 
    * @param date 
    * The date 
    */ 
    public void setDate(String date) { 
     this.date = date; 
    } 

    /** 
    * 
    * @return 
    * The noofitems 
    */ 
    public String getNoofitems() { 
     return noofitems; 
    } 

    /** 
    * 
    * @param noofitems 
    * The noofitems 
    */ 
    public void setNoofitems(String noofitems) { 
     this.noofitems = noofitems; 
    } 

    /** 
    * 
    * @return 
    * The productdetails 
    */ 
    public List<Productdetail> getProductdetails() { 
     return productdetails; 
    } 

    /** 
    * 
    * @param productdetails 
    * The productdetails 
    */ 
    public void setProductdetails(List<Productdetail> productdetails) { 
     this.productdetails = productdetails; 
    } 

    public Map<String, Object> getAdditionalProperties() { 
     return this.additionalProperties; 
    } 

    public void setAdditionalProperty(String name, Object value) { 
     this.additionalProperties.put(name, value); 
    } 

} 

productdetailsクラス:

private void requestData(OrderModel orderModel) { 

     Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(ENDPOINT) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 

     ApsaraCatalogAPI service = retrofit.create(ApsaraCatalogAPI.class); 
     Call<Void> call = service.setOrder(orderModel); 

     call.enqueue(new Callback<Void>() { 
     @Override 
     public void onResponse(Call<Void> call, Response<Void> response) { 
      if(response.isSuccessful()){ 
       Log.d("InApi","Yipppie"); 
      } 
     } 

     @Override 
     public void onFailure(Call<Void> call, Throwable t) { 
      Log.d("InApi","Kaboom"); 
     } 
    }); 

    } 

私のPOJOクラスを以下に示す

import java.util.HashMap; 
import java.util.Map; 

public class Productdetail { 

    private String pid; 
    private String sellingprice; 
    private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

    /** 
    * 
    * @return 
    * The pid 
    * @param s 
    */ 
    public String getPid(String s) { 
     return pid; 
    } 

    /** 
    * 
    * @param pid 
    * The pid 
    */ 
    public void setPid(String pid) { 
     this.pid = pid; 
    } 

    /** 
    * 
    * @return 
    * The sellingprice 
    * @param s 
    */ 
    public String getSellingprice(String s) { 
     return sellingprice; 
    } 

    /** 
    * 
    * @param sellingprice 
    * The sellingprice 
    */ 
    public void setSellingprice(String sellingprice) { 
     this.sellingprice = sellingprice; 
    } 

    public Map<String, Object> getAdditionalProperties() { 
     return this.additionalProperties; 
    } 

    public void setAdditionalProperty(String name, Object value) { 
     this.additionalProperties.put(name, value); 
    } 

} 
+0

サーバーのJSON応答とは何ですか?エラーメッセージに基づいて、APIはオブジェクトのリストを返しますが、単一のオブジェクトを指定しました。 – peitek

+0

私のapiが何かを返すのをやめたいのですが(更新された質問)、私のpojoをjsonに書きたいので、PHPファイルを必要とするのですか?私は改造やPHPには非常に新しくなっています。 –

+0

改造の面からすべてが見栄えしています。 – peitek

答えて

0

レトロフィットがあなたのPOJOに基づいてJSONを生成し、ポストペイロードの上に置きます。 ので、この場合には:

@POST("/apsaratrendz/data/apsara_json_orders_document.json") 
Call<Void> setOrder(@Body OrderModel orderModel); 

ポストのボディはorderModelのJSON表現になります。

あなたはSerializedName注釈、その非常に便利に使用できるJSONで生成atributtesの名前変更する必要がある場合:

public class OrderModel { 
    @SerializedName("other_name_for_json") 
    private String name; 

はそれが役に立てば幸いです。

関連する問題