有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在不使用Stringbuilder的情况下将SQLite数据设置为JsonObject类

我正在从我的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
    .............
    .............
   }

我可以使用

    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));

100200是“需求ID”

使用字符串生成器可以实现这一点。但是,有没有其他方法来实现这一点,比如使用对象映射器和类或其他东西


共 (1) 个答案

  1. # 1 楼答案

    如果您想要形成所显示的JSON,可以将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;