Java 转换列表<;MyDTO>;列出<;地图<;字符串,字符串>&燃气轮机;使用Gson
我的数据如下:Java 转换列表<;MyDTO>;列出<;地图<;字符串,字符串>&燃气轮机;使用Gson,java,gson,Java,Gson,我的数据如下: public class MyDTO { private String MEValueName; private String MyId; // getters and setters } Gson gson = new Gson(); List<MyDTO> list = new ArrayList<MyDTO>(); MyDTO dt
public class MyDTO {
private String MEValueName;
private String MyId;
// getters and setters
}
Gson gson = new Gson();
List<MyDTO> list = new ArrayList<MyDTO>();
MyDTO dto = new MyDTO();
dto.setMEValueName("raghu");
dto.setMyId("qwer");
MyDTO dto1 = new MyDTO();
dto1.setMEValueName("raghuveer");
dto1.setMyId("qwer1");
list.add(dto);
list.add(dto1);
String json = gson.toJson(list);
System.out.println(json);
// below line is failing
List<Map<String, String>> list1 = gson.fromJson(json, new TypeToken<List<Map<String, String>>>(){}.getType());
System.out.println(list1);
公共类MyDTO{
私有字符串MEValueName;
私有字符串MyId;
//接球手和接球手
}
Gson Gson=新的Gson();
列表=新的ArrayList();
MyDTO dto=新的MyDTO();
dto.setMEValueName(“raghu”);
dto.setMyId(“qwer”);
MyDTO dto1=新的MyDTO();
dto1.setMEValueName(“raghuveer”);
dto1.setMyId(“qwer1”);
列表。添加(dto);
列表。添加(dto1);
字符串json=gson.toJson(列表);
System.out.println(json);
//下面这条线是失败的
List list1=gson.fromJson(json,new-TypeToken(){}.getType());
System.out.println(列表1);
当我运行此命令时,会出现以下错误:
java.lang.IllegalStateException:应为字符串,但在第1行第11列路径$[0]处为BEGIN\u对象。
我还想使用泛型类型,这样我就可以使用其他DTO来转换为映射列表。请提出建议。我发现两个迫在眉睫的问题。。。 json字符串是List类型的对象。 gson.fromJson必须具有相同对象类型的TypeToken。 即使fromJson有效,也不能将List分配给List类型的List 编辑(通过内存执行此操作,因此可能需要一些微调才能编译):
List list1=新列表();
Map Map=newhashmap();
列表1.添加(地图);
add(“some key”,json);
我遗漏了什么?这只是一个简单的问题。你能为MyDTO提供代码吗?地图内容将是什么?你的代码对我很有用。结果是[{“MEValueName”:“raghu”,“MyId”:“qwer”},{“MEValueName”:“raghuveer”,“MyId”:“qwer1”}]
和[{MEValueName=raghu,MyId=qwer},{MEValueName=raghuveer,MyId=qwer1}]
。这是否意味着Gson
没有解决我的问题的方法?我遗漏了什么吗?Gson只是通过一个json字符串来回转换对象。这取决于你需要映射做什么?它是,您希望DTO在映射中表示为json字符串吗?是的,从列表到列表
List<Map<String, String>> list1 = new List();
Map<String,String> map = new HashMap<>();
list1.add(map);
map.add("some key",json);