Java add(新长(值))和(长)JSONArray.get(索引)失败

Java add(新长(值))和(长)JSONArray.get(索引)失败,java,android,json,Java,Android,Json,在服务器端,我构建JSON如下: JSONArray mArray = new JSONArray(); mArray.add(new Long(m.matchId)); // matchId is a long value JSONArray matchesArray = (JSONArray) ms.get(i); match.matchId = (Long) matchesArray.get(0); 在客户端(Android应用程序)上,我想如下解析传入的JSON: JSONArra

在服务器端,我构建JSON如下:

JSONArray mArray = new JSONArray();
mArray.add(new Long(m.matchId)); // matchId is a long value
JSONArray matchesArray = (JSONArray) ms.get(i); 
match.matchId = (Long) matchesArray.get(0);
在客户端(Android应用程序)上,我想如下解析传入的JSON:

JSONArray mArray = new JSONArray();
mArray.add(new Long(m.matchId)); // matchId is a long value
JSONArray matchesArray = (JSONArray) ms.get(i); 
match.matchId = (Long) matchesArray.get(0);
但是,我得到一个错误:
java.lang.ClassCastException:java.lang.Integer不能转换为java.lang.Long

如何执行此操作以确保获得正确的long值?

尝试:

((Number) (matchesArray.get(0))).longValue();
以获取数字的
long
值,与数字类型无关

编辑

正如@njzk2@mvd所指出的,快速阅读一下,您只需使用:

matchesArray.getLong(0);

do
((Number)(matchesArray.get(0)).longValue()
不起作用吗?Alexandro,就是这样。非常感谢。写一个答案,然后我将其选中为solved如果你想要一个长的调用,调用
getLong
太复杂了,没有任何原因。如果返回的对象不是一个数字,这会抛出一个ClassCastException。使用内置的强制方法(例如getLong),您将该部分留给JSON解析器,如果内容不长,它将抛出一个JSONException,更清楚地表明JSON不是您所期望的。正如@njzk2所说,API提供了
get
方法,应该使用这些方法而不是自制的方法@njzk2不知道JSONArray,正如您所说,
getLong()
是一个更好的答案。。。