我正在使用Retrofit将我的Android应用程序连接到数据库并获取这样的JSON对象
{
"id":1,
"title":"clean room",
"description":"clean my room",
"isVisible":true,
"status":1,
"createTimestamp": {"date":"2015-05-08 13:44:03.000000","timezone_type":3,"timezone":"Europe\/Berlin"},
"updateTimestamp":null,
"user_id":1,"category_id":1
}
我还有一个带有这些属性的Java类广告。 createTimestamp在MySQL中设置为TIMESTAMP
@SerializedName("createTimestamp")
@Expose
private Timestamp createTimestamp;
Java给了我一个错误,像这样:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT
如果我正在创建一个具有给定属性timezone_type,date,timezone,....的新类TimestampObject,并将我的Advert类中的createTimestamp属性设置为私有TimestampObject它可以工作,但我必须将日期从String转换为int值才能生成新的日期或日历对象。我也没弄清楚如何使用值timezone_type和timezone。有没有办法获取JSON对象createTimestamp并将其保存为Java中的时间戳?
躲开它。主要是因为我不确定Timestamp对象是否可以序列化。创建您正在引用的TimestampObject,然后继续。
从MySql获取日期。请在下面找到示例。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class GetDateFromMySql {
public static Connection getMySQLConnection() throws Exception {
String driver = "org.gjt.mm.mysql.Driver";
String url = "jdbc:mysql://localhost/databaseName";
String username = "root";
String password = "root";
Class.forName(driver);
return DriverManager.getConnection(url, username, password);
}
public static void main(String args[]) {
ResultSet rs = null;
Connection conn = null;
Statement stmt = null;
try {
conn = getMySQLConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery("select timeCol, dateCol, dateTimeCol from dateTimeTable");
while (rs.next()) {
java.sql.Time dbSqlTime = rs.getTime(1);
java.sql.Date dbSqlDate = rs.getDate(2);
java.sql.Timestamp dbSqlTimestamp = rs.getTimestamp(3);
System.out.println("dbSqlTime=" + dbSqlTime);
System.out.println("dbSqlDate=" + dbSqlDate);
System.out.println("dbSqlTimestamp=" + dbSqlTimestamp);
java.util.Date dbSqlTimeConverted = new java.util.Date(dbSqlTime.getTime());
java.util.Date dbSqlDateConverted = new java.util.Date(dbSqlDate.getTime());
System.out.println("in standard date");
System.out.println(dbSqlTimeConverted);
System.out.println(dbSqlDateConverted);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}