错误值从JSONObject的未来 - java的

错误值从JSONObject的未来 - java的

问题描述:

这是我的最后一个问题的延续: how to keep data stored into a hashtable - java错误值从JSONObject的未来 - java的

这里是JSON:

{"DeviceID":"35181805087546548","TotalCount":"0","Timestamp":"2013-03-05 14:30:15"} 

这里是我的哈希表的声明:

private static Hashtable<Integer,String> table = new Hashtable<Integer,String>(); 
    private static AtomicInteger count = new AtomicInteger() ; 

这里是解析jsonobject的代码:

 JSONObject jsonObj; 
     try { 
      jsonObj = new JSONObject(string); 
      int id = jsonObj.optInt("DeviceID", count.addAndGet(1)); 
      String name = jsonObj.toString(); 
      table.put(id, name); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

即使JSON中的“DeviceID”发生变化,使用下面的代码我的ID始终为“2147483647”。 任何提示?

非常感谢

您的值对于int而言太大。最大允许值为2,147,483,647。请参阅What is the maximum value for an int32?。你需要将这个值解析为一个长整型。

+0

Sotirios,提出了答案,而不是一个问题 – 2013-03-05 20:46:04

+0

+1以前看起来像一个有效的答案,现在也是如此。不需要粗鲁。 – Gamb 2013-03-05 20:46:18

+0

表达式非常重要,感谢您的更新。 – 2013-03-05 20:47:45

Java中的maximum value of an integer是2,147,483,647,因此您的设备ID不适合。您可能需要将其存储为long(最大值为9,223,372,036,854,775,807)。

您获得的数字是有符号整数的最大值,您需要使用long,否则结果限制为Integer.MAX_VALUE。