我有一个哈希图,其中按人拥有的汽车名称存储汽车列表。

Map<String,List<String>> personCarMap = new HashMap<String,List<String>>();


密钥是人员ID,值是汽车名称列表。在值中,我还想存储购买日期。所有这些都从数据库中获取。如何将键映射到数据库中的两个不同列?

这是我到目前为止的代码。

public static JSONObject fetchPersonCarInfo(String person) throws SQLException
{
    Map<String,List<String>> personCarMap = new HashMap<String,List<String>>();
    JSONObject jObj = new JSONObject();
    Connection connection = null;
    PreparedStatement statement = null;
    ResultSet rs = null;
    try {
        connection = DriverManager.getConnection("jdbc:myDriver:myDatabase",username,password);
        statement = connection.prepareStatement("select personId,car,purchase_date from carz where person = ?");
        rs = statement.executeQuery();
        while(rs.next()) {
            List<String> carIds;
            if(personCarMap.containsKey(rs.getString(carId))) {
                carIds = personCarMap.get(rs.getString(personId));
            } else {
                carIds = new ArrayList<String>();
            }
            carIds.add(rs.getString(carId));
            carIds.add(rs.getTimestamp(purchase_date).toString()); //This is where I have a doubt.
            personCarMap.put(rs.getString(carId),carIds);
        }
        for(Map.Entry<String, List<String>> personCarMapEntry:personCarMap.entrySet())
        {
            jObj.put("personID", personCarMapEntry.getKey());
            jObj.put("carID", personCarMapEntry.getValue());
        }
    } finally{
        DatabaseFunctions.closeDBResources(null, statement, rs);
    }
    return jObj;
}
}


我希望我的JSON对象显示{personId,[carId,purchasedate]}。请建议我如何让JSON数组也打印出购买日期?我看到personId和carId的输出清晰可见,但是我无法弄清楚如何添加购买日期,因此需要您的专家建议。

最佳答案

您需要使用具有两个属性carId和PurchaseDate的自定义对象列表。

Map<String,List<ClassNameOfCustomObject>> personCarMap = new HashMap<String,List<ClassNameOfCustomObject>>();


这样,您将能够将采购日期和carId一起存储在personCarMap中。

关于java - 使用JSON打印哈希图内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19761705/

10-09 14:14