我正在使用wordpress post metas和rest api,我已经暴露了一个名为“picture_collection”的元字段,它将数据存储为一个整数数组,其中每个数字都代表附件的ID。然后,我在询问 api 时修改了响应,以给我一个链接列表而不是附件 ID,如下所示:
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)用户制作图片并上传她,作为交换,他收到存储在 Integers ArrayList 中的附件的 ID。2)当他完成程序时更新传递给api的post_meta整个列表。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 错误“ID 期望一个 int 但找到一个对象”并且根本没有返回链接。一瞥设置id的代码:
iterator=idList.iterator;
while(iterator.hasNext()){
FotoCollection fc = new FotoCollection();
fc.ID = iterator.next
我能做些什么来解决这个问题?我需要一个自定义转换器?