首页 / JSON / java-将json转换为对象列表
java-将json转换为对象列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-将json转换为对象列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3498字,纯文字阅读大概需要5分钟。
内容图文
![java-将json转换为对象列表](/upload/InfoBanner/zyjiaocheng/684/82ae578c0fe6485c86f172faa89f849e.jpg)
我有以下字符串:
String json = "[{\"id\": \"0\", \"ip\": \"123\", \"mac\": \"456\"}, {\"id\": \"1\", \"ip\": \"111\", \"mac\": \"222\"}]";
一个SlaveEntity实体具有:
public class SlaveEntity extends BaseEntity {
private String ip;
private String macAddress;
private String status;
@OneToMany(mappedBy="slave", targetEntity = PositionEntity.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<PositionEntity> positions;
}
我正在写一个采用json并返回SlaveEntity列表的方法:
public static List<SlaveEntity> JsonToSlaveEntity(String json) {
ObjectMapper objectMapper = new ObjectMapper();
List<SlaveEntity> obj = new ArrayList<SlaveEntity>();
try {
obj = objectMapper.readValue(json, List.class);
} catch (IOException e) {
e.printStackTrace();
}
return obj;
}
问题在于obj List的结果如下:
但是我需要的obj List是这样的:
那么如何获得所需的清单?
解决方法:
您可以将结果转换为对象列表,也可以传入类型参数而不是List类.
String jsonString = "[{\"id\": \"0\", \"ip\": \"123\", \"mac\": \"456\"}, {\"id\": \"1\", \"ip\": \"111\", \"mac\": \"222\"}]";
有对象
List<Object> items = objectMapper.readValue(
jsonString,
objectMapper.getTypeFactory().constructParametricType(List.class, Object.class)
);
与SlaveEntity
List<SlaveEntity> items = objectMapper.readValue(
jsonString,
objectMapper.getTypeFactory().constructCollectionType(List.class, SlaveEntity.class)
);
更新资料
这是我想出的,并且有效.
实体测试
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.databind.ObjectMapper;
public class EntityTest {
public static void main(String[] args) {
String json = "[{\"id\": \"0\", \"ip\": \"123\", \"mac\": \"456\"}, {\"id\": \"1\", \"ip\": \"111\", \"mac\": \"222\"}]";
for (SlaveEntity entity : jsonToSlaveEntity(json)) {
System.out.println(entity);
}
}
public static List<SlaveEntity> jsonToSlaveEntity(String json) {
ObjectMapper objectMapper = new ObjectMapper();
try {
return objectMapper.readValue(
json,
objectMapper.getTypeFactory().constructCollectionType(List.class, SlaveEntity.class)
);
} catch (IOException e) {
e.printStackTrace();
}
return new ArrayList<SlaveEntity>();
}
}
基础实体
public class BaseEntity {
private long id;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
从属实体
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import com.fasterxml.jackson.annotation.JsonProperty;
public class SlaveEntity extends BaseEntity {
private String ip;
@JsonProperty("mac")
private String macAddress;
private String status;
@OneToMany(mappedBy = "slave", targetEntity = PositionEntity.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<PositionEntity> positions;
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getMacAddress() {
return macAddress;
}
public void setMacAddress(String macAddress) {
this.macAddress = macAddress;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public List<PositionEntity> getPositions() {
return positions;
}
public void setPositions(List<PositionEntity> positions) {
this.positions = positions;
}
@Override
public String toString() {
return String.format(
"SlaveEntity [id=%d, ip=%s, mac=%s, status=%s, positions=%s]",
getId(), ip, macAddress, status, positions);
}
}
PositionEntity
public class PositionEntity {
// ?
}
结果
SlaveEntity [id=0, ip=123, mac=456, status=null, positions=null]
SlaveEntity [id=1, ip=111, mac=222, status=null, positions=null]
内容总结
以上是互联网集市为您收集整理的java-将json转换为对象列表全部内容,希望文章能够帮你解决java-将json转换为对象列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。