【问题标题】:attach key name to value in a json array result将键名附加到 json 数组结果中的值
【发布时间】:2018-08-05 21:18:27
【问题描述】:

我在 spring 控制器和 DAO 类中有一个从数据库中获取数据的代码 sn-p。最终结果是得到一个 json 输出。处理结果时,它只显示数组而不显示值对的名称。下面是一个sn-p

道类sn-p

@SuppressWarnings("unchecked")
    public List <Object[]> getResult(String no) {
        List <Object[]> dataList = new ArrayList<>();
        List <Object[]> results = sessionFactory.getCurrentSession().createQuery("select i.F_NO, i.LAST_NAME, i.FIRST_NAME, i.HOME_PHONE, i.SEX_NO from Data i where f_no = :f_no")
                .setParameter("_no",  no).list();
        if(!CollectionUtils.isEmpty(results)){
            Object firstDataOccurence = results.get(0);
            dataList.add((Object[]) firstDataOccurence);
            return dataList;
        }
        else{
            return dataList;
        }
    }

控制器sn-p

@RequestMapping(value = "/getData/{tin}", method = RequestMethod.GET, headers = "Accept=application/json")
    @ResponseBody
    public List<Object[]> getData(@PathVariable("no") String searchName) {

        searchName = searchName.trim();

        List <Object[]> dataList= myDao.getResult(searchName);


        return dataList;

    }

现在有了上面我的输出变成了

[["100123","demo12","demo7","demo9","demo19","demo28","demo27","demo4","demo5","demo24","demo20"]]

根据上面的结果,你发现键名不存在。请问如何在我的 json 响应中获取键:值对。

【问题讨论】:

  • 抱歉,我对此投反对票的错误在哪里。这只是一次公平的尝试

标签: java json spring spring-mvc


【解决方案1】:

步骤 1) 您可以创建 POJO 并设置值,而不是对象列表 db 对象列表到 pojo。

第 2 步)您需要将普通列表转换为 JsonArray 。请 请按照以下步骤操作。

List <Object[]> results = sessionFactory.getCurrentSession().createQuery("select i.F_NO, i.LAST_NAME, i.FIRST_NAME, i.HOME_PHONE, i.SEX_NO from Data i where f_no = :f_no")
                .setParameter("_no",  no).list();
JSONObject jObject = new JSONObject();
try
{
    JSONArray jArray = new JSONArray();
    for (NewPojo obj: results)
    {
         JSONObject studentJSON = new JSONObject();
         studentJSON.put("objfname", obj.getFName());
         studentJSON.put("objlname ", obj.getLName());
         jArray.put(studentJSON);
    }
    jObject.put("NewList", jArray);
} catch (JSONException jse) {
    jse.printStacktrace();
}

注意:如果需要,您也可以使用 JSONObject

Ref links:

http://www.java2novice.com/java-json/javax.json/create-json-array/

How to Create JSONArray for a List<Class name>

【讨论】:

  • 你没有添加return语句。我目前正在实施您的答案,我坚持将其合并到我已有的内容中
  • 这不是全部代码。我只是给出了示例sn-p。您需要在它上面进行修改。
  • 你不知道如何创建POJO吗?你的 DAO 现在应该返回 JsobObject 而不是 list。如果你想要所有代码,请自己尝试,那么你将学不到任何东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多