java - 将Unix时间解析为android上的java

标签 java android json parsing time

美好的一天。我正在开发一个小应用程序,目前我正在尝试从 JSON 对象(在 CouchDB 上)解析 Unix 时间。我尝试了几种方法,但我认为这是最接近的一种。现在我得到 NumberFormatException: Invalid long: "Time"error

private Points parseJsonDocument(JSONObject json) throws JSONException, ParseException
{

    String openKey = JSON_MAP.get(MAP_OPEN);
    String closeKey = JSON_MAP.get(MAP_CLOSE);
    String highKey = JSON_MAP.get(MAP_HIGH);
    String lowKey = JSON_MAP.get(MAP_LOW);
    String volumeKey = JSON_MAP.get(MAP_VOLUME);
    String dateKey = JSON_MAP.get(MAP_DATE);


    JSONObject object = json.getJSONObject("Stock");
    JSONArray array = object.getJSONArray("Data");
//  JSONArray array = json.getJSONArray("Data");
    Points result = new Points();


    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //desired format

    Long time = Long.parseLong(dateKey);
    final Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(time *1000);



    for(int i=0;i<array.length();i++)
    {
        JSONObject obj = array.getJSONObject(i);

        Point cp = new Point();
        cp.c = obj.getDouble(closeKey);
        cp.h = obj.getDouble(highKey);
        cp.l = obj.getDouble(lowKey);
        cp.o = obj.getDouble(openKey);
        cp.v = obj.getDouble(volumeKey);

        String date = obj.getString(dateKey);
        cp.dt = df.parse(df.format(cal.getTime()));

        result.add(cp);
    }

    return result;
}

JSON 对象如下所示:

     {
   "_id": "abbv",
   "_rev": "12-3d250de8395a12e0c92dfb9d7d379fc4",
    "Stock": {
       "Data": [
       {
           "Time": "1386598949000",
           "Open": "50.17",
           "High": "0",
           "Low": "0",
           "Close": "51.37",
           "Volume": "7285755"
       }
]
}

这可能是一些愚蠢的错误,我只是因为缺乏经验而看不到,所以任何建议或指导将不胜感激。是的,我曾尝试阅读 javadoc,但找不到解决方案。 谢谢。

最佳答案

Long time = Long.parseLong(dateKey);

正在尝试解析 String 时间 Long . <罢工> 我想你想做的是这个

String timeString = array.getJSONObject(0).getString(dateKey);
Long time = Long.parseLong(timeString)

<罢工>

编辑:重新阅读您的代码,我认为问题是您试图过早地解析您的日期。

你需要移动线Long time = Long.parseLong(dateKey);进入您的 JSON 解析循环。

然后,而不是 Long time = Long.parseLong(dateKey); ,您应该解析日期 value 而不是日期 key,所以 Long.parseLong(date);

关于java - 将Unix时间解析为android上的java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20482267/

相关文章:

java - 设置数据库数组中 ListView 行的背景颜色

java - 如何在 Java 中加载预先存在的 PrintWriter?

json - 如何在 Tomcat 的 WEB-INF/classes 文件夹中引用另一个文件?

java - 当我通过命令提示符运行我的 java 文件时出现错误

java - 如何从扫描仪返回有效输入?

android - 当我更改我的应用程序名称时会发生什么?

android - 动态创建 ListModel 列表

java - 如何使用 Jsoup 遍历 XML 标签?

java - 如何将所有值从一个 JSONObject 复制到另一个?

c# - 我正在尝试使用适用于 iOS 的消息模板