2013-02-03 25 views
0

我试图把一个长值(毫秒)在JSONArray是这样的:放久值在JSONArray

  long epoc = 1359231233L; 
     long milli = epoc*1000; 
     System.out.println(milli); 
     JSONArray arr = new JSONArray(); 
     arr.put((Long)epoc*1000); 
     System.out.println(arr.toString()); 

输出是:

1359231233000 
[1.359231233e12] 

我不希望指数值在数组中,我怎么能得到它显示实际的长期价值?

+0

尝试'arr.getLong(0)'。 – vikiiii

回答

3

我不想在数组中的指数值,我怎么能得到它显示实际的长期价值?

你看到的窗体不是在数组中。它由toString创建。数组中实际的值是一个Long,而不是一个字符串。

如果你想在没有使用指数表示法的情况下获得该数字的字符串形式,我希望你将不得不编写自己的长串字符串例程(或者找到一个,也许在Apache公共版或类似的地方)。

注意,指数形式是完全可以接受JSON

+0

我的jquery Flot图需要的时间以毫秒为单位,似乎并不接受指数值。 –

+1

@MohammadAdil:那*很不幸。我想知道他们使用的是什么JSON解析器。可能值得一个错误报告。 –

+2

@MohammadAdil:你确定*吗?内置于Chrome,Firefox和IE9中的'JSON.parse'和Crockford的'json_parse'一样:http://jsbin.com/ajunuh/1也许有一个*不同的问题? –

0

Long.toString()应该给你你想要的格式数量。

long epoc = 1359231233L; 
long milli = epoc*1000; 
System.out.println(milli); 
JSONArray arr = new JSONArray(); 
arr.put(Long.toString((Long)epoc*1000)); 
System.out.println(arr.toString()); 
+1

唯一的问题是:输出数组有一个字符串现在 '[“1359231233000”]' –

+0

做jquery flot接受这个毫秒值 –

+0

@Mohammad Adil老实说,我不确定,你可以做一些预处理返回的数据在传递给flot之前? –