基本上我想将JSONObject json转换为整数(127181078)。当我使用这段代码时:
int intOfReceivedID = Integer.parseInt(json);
我收到此错误消息:
java.lang.NumberFormatException:Invalid int:127181078“
当我使用此代码时:
char[] charArray = json.toCharArray();
String stringCharArray = charArray.toString();
testTextView.setText(stringCharArray);
testTextView给了我:[C @ 2378e625
但是,当我使用此代码时:
preprocessedjson = String.valueOf(json);
testTextView.setText(preprocessedjson);
TextView
给出了127181078,但是当我将文本解析为整数时,我得到了一些错误。
这是php代码:
$myfile = fopen($filename, 'r') or die("Unable to open file!");
echo fread($myfile,filesize($filename));
fclose($myfile);
这是makeHttpRequest:
JSONObject json = jparser.makeHttpRequest("http://myurl.nl/readspecifictextfile.php","POST",data);
答案 0 :(得分:2)
这个问题令人困惑但是从您的错误消息看起来这是一个与JSON无关的Java问题,因为在这种情况下你的json String看起来实际上并不包含json(来自异常消息)。
看起来问题是你的json值是一个数字加上Integer.parseInt无法处理的额外空格。
尝试
Integer.parseInt(json.trim())
答案 1 :(得分:0)
int intOfReceivedID = Integer.parseInt(json);
我收到此错误 消息:
java.lang.NumberFormatException:Invalid int:127181078“
这是因为ID的末尾有一个新行字符,无法解析为整数。
当我使用此代码时:
char[] charArray = json.toCharArray(); String stringCharArray = charArray.toString(); testTextView.setText(stringCharArray);
testTextView给了我:[C @ 2378e625
默认情况下,在对象上调用toString()
会打印对象的内存位置(在本例中为[C@2378e625
)。这就是TextView
中显示的内容。
但是,当我使用此代码时:
preprocessedjson = String.valueOf(json); testTextView.setText(preprocessedjson);
TextView给出了127181078,但是当我解析时出现了一些错误 文本为整数。
将文本解析为整数时会出错,因为它最后仍然有一个无效的换行符。
如果您从服务器收到的JSONObject
只包含一个long,那么您可以使用getLong()
或optLong()
方法来检索整数值。 JSON解析器自动处理所有解析,您不需要做任何额外的工作。
JSONObject json = jparser.makeHttpRequest("http://myurl.nl/readspecifictextfile.php","POST",data);
final long receivedId = json.optLong();