从我的SQLite数据库中检索信息以显示在CardView上
我的SQLite数据库结构是SQLite DB
我的班级是
public class ServiceRequest{
public String reqid;
public String name;
public String branch;
public Date date;
public Date time;
public String services;
//Getter and setter
.............
.............
}
我可以使用
将其转换为JSON格式 List<ServiceRequest> reqs = getAllReqs();
List<ServiceRequest> jobservList = new ArrayList<>();
for (ServiceRequest access : reqs) {
ServiceRequest ob = new ServiceRequest();
ob.setId(access.getId());
ob.setBranch(access.getBranch());
ob.setName(access.getName());
ob.setDate(access.getDate());
ob.setTime(access.getTime());
ob.setServices(access.getServices());
jobservList.add(ob);
}
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json2 = gson.toJson(jobservList);
return json2;
但是我想要的JSONObject格式是
{
"100": {
"name": "Rahul Suresh",
"branch": "Koramangala",
"phNumber":"123456",
"date": "2016-08-06",
"time": "16:00",
"reqServices": "Loans"
},
"200": {
"name": "Sidh",
"branch": "Jayanagar",
"phNumber":"182694",
"date": "2016-08-12",
"time": "11:00",
"reqServices": "OpenAcc,SafeDeposit"
}
}
这样我就可以通过一次调用获得一个完整的JSON对象
JSONObject jb = (JSONObject) jsonObject.get(Integer.toString(id));
100,200是'reqid'
使用字符串构建器可以实现此目的。但是有没有其他方法可以实现这个,比如使用对象映射器和类或什么东西..?
答案 0 :(得分:1)
如果你想形成你所展示的JSON,你可以&#34;拉出&#34;将ID转换为HashMap键,然后将该值设置为您的对象。
我无法记住Gson如何处理地图中对象值的转换,但这是一般的想法
List<ServiceRequest> reqs = getAllReqs();
HashMap<Integer, ServiceRequest> map = new HashMap<Integer, ServiceRequest>();
for (ServiceRequest access : reqs) {
map.put(access.getId(), access);
}
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json2 = gson.toJson(map); // TODO: Not sure if this will work
return json2;