Java add(新长(值))和(长)JSONArray.get(索引)失败
在服务器端,我构建JSON如下: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
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()
是一个更好的答案。。。