不使用Stringbuilder将SQLite数据设置为JsonObject类

时间:2016-08-05 21:51:07

标签: java json sqlite android gson

从我的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'

使用字符串构建器可以实现此目的。但是有没有其他方法可以实现这个,比如使用对象映射器和类或什么东西..?

1 个答案:

答案 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;