2016-03-23 11 views
0

私はワードプレスのポストメタや残りのAPIを使って作業しています。私は、ピクチャコレクションと呼ばれるメタフィールドを休むことに曝露しました。データは整数の配列として格納されます。 。Gsonコンバータ工場retrofit2。シリアル化/逆シリアル化のさまざまなタイプ

function get_pic_coll ($object, $field_name, $request) { 
     include_once dirname(__FILE__) . '/attach_coll.php'; 
     $pic_coll = get_post_meta ($object['id'], $field_name, true); 
     $json_coll = array(); 
     if($pic_coll != null || !empty($pic_coll)){ 
      foreach ($pic_coll as $pic){ 
       $media_id = $pic; 
       $link_med = wp_get_attachment_image_src($media_id, 'medium'); 
       $link_full = wp_get_attachment_image_src($media_id, 'full'); 
       $medium_size = $link_med[0]; 
       $full_size = $link_full[0]; 
       $obj = new attach_coll($media_id, $medium_size, $full_size); 
       $element = $obj->return_coll_object(); 
       $json_coll[] = $element; 
      } 
      return $json_coll; 
     } 
    } 

をattach_collオブジェクトがある一方で:

class attach_coll{ 
public function __construct($media_id, $medium_url, $orig_url){ 
    $this->attach_id = $media_id; 
    $this->medium_size_pic = $medium_url; 
    $this->full_size_pic = $orig_url; 
} 

private $attach_id; 
private $medium_size_pic; 
private $full_size_pic; 

public function get_media_id(){ 
    return $this->attach_id; 
} 
public function get_medium_pic(){ 
    return $this->medium_size_pic; 
} 
public function get_orig_pic(){ 
    return $this->full_size_pic; 
} 
public function return_coll_object(){ 
    $ret_coll = array(
      "ID"  => $this->get_media_id(), 
      "medium" => $this->get_medium_pic(), 
      "full" => $this->get_orig_pic() 
    ); 
    return $ret_coll; 
} 

}

このように、私の代わりに添付ファイルIDのリンクのリストを提供するAPIを問い合わせるとき 私はその後、応答を変更しました

Java側では次のようになります。 1)ユーザーが写真を作成してアップロードし、Integers ArrayList内に格納されている添付ファイルのIDを受け取ります。 2)彼がプログラムを更新したとき、post_metaはリスト全体をapiに渡します。

{... 
    "id":"someValue", 
    "title":"myTitle", 
    "pic_collection":[ {'ID':'picID','mediumSizePic':'someUrl', 'FullSizePic':'SomeOtherUrl},{...}], 

私はResponseBodyから、私が期待していたJSONを見るようにPHPのコードがうまく機能し、: 3)プログラムは私のカスタムフィールドで全体のポストを含むJSONとして応答を受信し、それはこのようになります

List<PicCollection> picList = new ArrayList<PicCollection>(); 
public class PicCollection{ 
@SerializedName("ID") 
private int picId; 
@SerializedName("medium_size") 
private String medSizeUrl; 
@SerializedName("full_size") 
private String fullSizeUrl; 
Getters and Setters 
} 

@SerializedName("pic_collection") 
private List<Integer> idList = new ArrayList<Integer>(); 
public void setList(List<Integer> list){ 
this.idList=list; 
} 

私は私のリストを変更しようとしました:問題は、i「は整数を期待して、オブジェクト見つかっgson」POJOをのように定義されているため、論理的であるエラーを取得していますということです

しかし、それはすべてを複雑にして、私はまだ同じgsonエラー 'IDがintを期待していますが、オブジェクトが見つかりました'とリンクがまったく返されないため、問題を解決しませんでした。 コードの片鱗がIDを設定するには:

iterator=idList.iterator; 
while(iterator.hasNext()){ 
FotoCollection fc = new FotoCollection(); 
fc.ID = iterator.next 

私は問題をresoveために何ができますか?私はカスタムコンバータが必要ですか?

答えて

0

私はちょうど2つのオブジェクトを作成しました: 要求のためのものと応答のためのものです。

関連する問題