将JSONObject解析为整数时出错无效

时间:2017-09-01 19:08:23

标签: android json integer

基本上我想将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,但是当我将文本解析为整数时,我得到了一些错误。

  1. 有谁能告诉我这里发生了什么?
  2. 你能帮我把我的JSONObject转换成整数吗?
  3. 这是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);
    

2 个答案:

答案 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();