(10)json字符转 转JavaBean,且bean中还有List<T>属性 ,重点@JsonProperty("tags") [jackson]

public class VideoTagChangeDto {
	private Long vid;
	private Long uid;
	@JsonProperty("msgid")
	private Long msgId;
	@JsonProperty("createtime")
	private Long createTime;
	
	@JsonProperty("tags")
	private List<VideoTagBean> tags;

	public Long getVid() {
		return vid;
	}

	public void setVid(Long vid) {
		this.vid = vid;
	}

	public Long getUid() {
		return uid;
	}

	public void setUid(Long uid) {
		this.uid = uid;
	}

	public List<VideoTagBean> getTagList() {
		return tags;
	}

	public void setTagList(List<VideoTagBean> tagList) {
		this.tags = tagList;
	}

	public Long getMsgId() {
		return msgId;
	}

	public void setMsgId(Long msgId) {
		this.msgId = msgId;
	}

	public Long getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Long createTime) {
		this.createTime = createTime;
	}

	@Override
	public String toString() {
		return JsonMapper.nonDefaultMapper().toJson(this);
	}
}


public class VideoTagBean {
   
    @JsonProperty("tag_id")
	private Integer tagId;
    @JsonProperty("tag_name")
    private String tagName;

  
    public Integer getTagId() {
		return tagId;
	}
	public void setTagId(Integer tagId) {
		this.tagId = tagId;
	}
	public String getTagName() {
		return tagName;
	}
	public void setTagName(String tagName) {
		this.tagName = tagName;
	}

	@Override
    public String toString() {
        return JsonMapper.nonDefaultMapper().toJson(this);
    }
}


public class VideoTagChangeRespDto extends CommonMQResp<VideoTagChangeDto> {
	
	
}

public class Test {

	public static void main(String[] args) {

		String respStr = "{\"msgs\":[{\"vid\":88,\"uid\":1,\"tags\":[{\"tag_id\":1,\"tag_name\":\"1name\"},{\"tag_id\":2,\"tag_name\":\"2name\"}]},{\"vid\":99,\"uid\":11,\"tags\":[{\"tag_id\":11,\"tag_name\":\"11name\"},{\"tag_id\":22,\"tag_name\":\"22name\"}]}]}";
		final VideoTagChangeRespDto resp = JsonMapper.nonEmptyMapper() .fromJson(respStr, VideoTagChangeRespDto.class);
		
		System.out.println(resp.getMsgs());
	}
}

[{"vid":88,"uid":1,"tagList":[{"tag_id":1,"tag_name":"1name"},{"tag_id":2,"tag_name":"2name"}],"tags":[{"tag_id":1,"tag_name":"1name"},{"tag_id":2,"tag_name":"2name"}]}, {"vid":99,"uid":11,"tagList":[{"tag_id":11,"tag_name":"11name"},{"tag_id":22,"tag_name":"22name"}],"tags":[{"tag_id":11,"tag_name":"11name"},{"tag_id":22,"tag_name":"22name"}]}]


import com.fasterxml.jackson.annotation.JsonProperty;





你可以使用Apache Commons BeanUtils库来实现List<Map>List<JavaBean>的操作。下面是一个示例工具类的实现: ```java import org.apache.commons.beanutils.BeanUtils; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; import java.util.Map; public class ListToBeanConverter { public static <T> List<T> convertListToBeanList(List<Map<String, Object>> mapList, Class<T> beanClass) { List<T> beanList = new ArrayList<>(); try { for (Map<String, Object> map : mapList) { T bean = beanClass.getDeclaredConstructor().newInstance(); BeanUtils.populate(bean, map); beanList.add(bean); } } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { // 处理异常 e.printStackTrace(); } return beanList; } } ``` 在上述代码中,`convertListToBeanList`方法接受一个List<Map<String, Object>>和目标JavaBean的Class对象作为参数。它遍历mapList中的每个Map,并使用BeanUtils类的`populate`方法将Map中的键值对设置到JavaBean对象中。然后将换后的JavaBean对象添加到结果列表中。 使用该工具类,你可以将一个List<Map>换为对应的List<JavaBean>。示例如下: ```java List<Map<String, Object>> mapList = new ArrayList<>(); Map<String, Object> map1 = new HashMap<>(); map1.put("property1", "value1"); map1.put("property2", 123); mapList.add(map1); Map<String, Object> map2 = new HashMap<>(); map2.put("property1", "value2"); map2.put("property2", 456); mapList.add(map2); List<JavaBean> beanList = ListToBeanConverter.convertListToBeanList(mapList, JavaBean.class); ``` 在上述示例中,我们创建一个包含属性名和对应值的Map对象列表,并将其传递给`convertListToBeanList`方法。它将返回一个JavaBean对象列表,其中的属性值已经被设置。 希望这个工具类对你有帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值