使用 GSON 从休眠创建的列表中读取字段名称 MySQL select

Reading field name using GSON from list created from hibernate MySQL select

我正在寻找一种方法来获得从 MySQL 查询返回的列表,并在 JSON 中输出字段名称而不是数组。这是一些示例代码:

List list = lookup_mgr.getResults("select someField, anotherField from someTable");
if (list != null) {
    String json = new Gson().toJson(list);
}

这将拉取一个列表并创建一个 JSON 数组,例如:

[
    ["someFieldValue","anotherFieldValue"],
    ["someFieldValue","anotherFieldValue"]
]

我希望它是这样的:

[
    {
        someField: "someFieldValue",
        anotherField: "anotherFieldValue"]
    },
    {
        someField: "someFieldValue",
        anotherField: "anotherFieldValue"]
    }
]

我希望它尽可能简单和快速。我该怎么做呢?

我想你真正想要的是这个('{', '}' 代表对象):

[
  {
    someField: "someFieldValue",
    anotherField: "anotherFieldValue"]
  },
  {
    someField: "someFieldValue",
    anotherField: "anotherFieldValue"]
  }
]

这表示以 JSON 表示法表示的对象数组。与您当前获得的(字符串数组的数组)相反。

为此,您应该创建一个 Java bean class,它恰好具有这两个属性(我们称它为 SomeBean)。遍历您的查询结果并将您需要的数据放入 List,然后将该列表传递给 new Gson().toJson(list).

您可以使用 JSONObject。只需将您的结果放入其中,然后 return 那。

示例 -

public JSONObject getResult(){ 

  JSONObject responseJson = new JSONObject();

    List<Object> resultList = new ArrayList<Object>();
    User user1 = new User();
    User user2 = new User();
    User user3 = new User();
    resultList.add(user1);
    resultList.add(user2);
    resultList.add(user3);

    responseJson.put("result", resultList);

return responseJson;
}

希望对您有所帮助!