Ява — Gson конвертер фабрика дооснащение2. Различные типы в сериализации / десериализации

Я работаю с мета-постами WordPress и API-интерфейсом rest, я выставил rest мета-поле, называемое «picture_collection», в котором данные хранятся в виде массива целых чисел, где каждое число представляет идентификатор вложения.
Затем я изменил ответ при опросе API, чтобы дать мне список ссылок вместо идентификаторов вложений, например:

    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;
}

}

На стороне Java все выглядит так:
1) пользователь делает фотографию и загружает ее, он получает взамен идентификатор вложения, которое хранится в Integer ArrayList.
2) когда он сделал программу, обновите post_meta, передавая api весь список.
3) программа получает ответ в виде json, содержащий весь пост с моим настраиваемым полем, это выглядит так:

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

PHP-код работает хорошо, как я вижу из ResponseBody json, которого я ожидал, проблема в том, что я получаю сообщение об ошибке «gson ожидал целое число и нашел объект», что логично, потому что pojo определено так:

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

Я пытался изменить свой список на:

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
}

Но это только усложнило ситуацию и не решило проблему, так как у меня все тот же идентификатор ошибки gson: «ожидал int, но нашел объект», а ссылки вообще не возвращались.
Взгляд на код для установки идентификаторов:

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

Что я могу сделать, чтобы решить проблему? Мне нужен специальный конвертер?

0

Решение

Я только что создал 2 объекта:
Один для запроса и один для ответа.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]