2 sachinks SachinKS 于 2013.08.21 16:44 提问

getLong和getString获取的值不同

代码如下:

 JSONObject contentObject = new JSONObject(content);
 JSONObject params = contentObject.getJSONObject("response_params");
 Log.d("onTest", "channel_id:" + params.getString("channel_id"));
 Log.d("onTest", "channel_id:" + params.getLong("channel_id"));

日志打印:

  08-21 12:46:21.470: DEBUG/onTest(25228): onMessage: content : {"response_params":{"appid":"1071410","channel_id":"3537275240990320342","user_id":"714893193627619861"},"request_id":1293438498}
   08-21 12:46:21.480: DEBUG/onTest(25228): channel_id:3537275240990320342
   08-21 12:46:21.480: DEBUG/onTest(25228): channel_id:3537275240990320128

为什么getLong 值是3537275240990320128
而String 值是3537275240990320342

1个回答

lanhailvcao
lanhailvcao   2013.08.21 17:24
已采纳

说明文档里是这样写的:

public long getLong (String name)

Returns the value mapped by name if it exists and is a long or can be coerced to a long. Note that JSON represents numbers as doubles, so this is lossy; use strings to transfer numbers via JSON.

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
mysql中的varchar 类型但是Java中的ResultSet的方法getString()无法获取该列的值
问题点:mysql中的varchar 类型但是Java中的ResultSet的方法getString()无法获取该列的值,而getLong可以获取:实际错误场景:eclipse的编译和运行的jdk版本是jdk5.0mysql 数据库(5.5.27)中有表test,test中的第3列是varchar类型,存储的是1,第4列也是varchar类型 存储的是"测试"。在java工程中创建mysql的jd...
无效的列类型: getInt not implemented for class oracle.jdbc.driver.T4CRowidAccessor
SpringMVC+MyBatis向数据库插入数据,主键应用ORACLE中自己设置的自增序列会发生如下错误: SQL state [99999]; error code [17004]; 无效的列类型: getInt not implemented for class oracle.jdbc.driver.T4CRowidAccessor;  nested exception is java.
JSONObject的getString()和optString()的区别
The difference is that optString returns the empty string ("") if the key you specify doesn't exist.getString on the other hand throws a JSONException. Use getString if it's an error for the
JSONObject中optString和getString等的区别
The difference is that optString returns the empty string ("") if the key you specify doesn't exist.getString on the other hand throws a JSONException. Use getString if it's an error for the data to
Android中获取不同语言目录下的字符串
首先创建两个API: private final static String LAN_FR = "fr"; private final static String LAN_ES = "es"; Resources getResourcesByLocale( Resources res, String localeName ) { Configurati
使用 ResultSet 遍历查询结果String getString(int columnIndex)
使用 ResultSet 遍历查询结果String getString(int columnIndex)
JSONObject中取String 值的几种方法和对比
今天写代码的时候发现以前写JSON中取String值喜欢这样写: String kewen = (String)test.get("kewen"); 其实这样写比较挫,一般来说JSON对象中取String类型的值有这两种方法: test.getString("name"); test.optString("name"); 然后来看一下这两种方法有什么不同 public stat
JSONObject #getString(String string) 空值(null)问题
今天在android1.6平台上做Json数据解析的时候碰到了这样一个问题: 返回的数据为:{"message":null} 当使用:JSONObject jsonObj = new JSONObject(jsonMessage); String message=jsonObj.getString("message"); 本以为message 是空值(null) 结果
JDBC:getNString()和getString()的区别
今天偶然看到ResultSet 里面有一个getNString方法。 api解释如下 哦,这样。 然后查getStrign的。 这次是英文 相比之下,getNString()如果查询了属性不为NCHAR、NVARCHAR、LONGNVARCHAR的字段,会报错。而getString()可以查询所有,并不会报错。若非字符或字符串,则会toString一下。
Activity之间用 intent.putExtra传值,bundle.getString取值为空null
在开发时用到了两个Activity传值,在第二个Activity中取值提示为空,百思不得其解后找到了原因,先来看看最开始出问题的代码: 很正常的点击传值跳转: case R.id.cv_matchdetails_sponor: Intent intent = new Intent(MatchDetailsActivity.this