java JSON未确定字符串错误
我的Android应用程序的HTTP请求有问题
我正在尝试获取此JSON字符串:
{
"produto": [
{
"pro_id": 2,
"pro_nome": "MELAO TIPO12"
},
{
"pro_id": 3,
"pro_nome": "MAMAO PAPAIA TIPO 15"
},
{
"pro_id": 4,
"pro_nome": "MELANCIA GRANDE"
},
{
"pro_id": 11,
"pro_nome": "MARACUJA SUPER"
},
{
"pro_id": 17,
"pro_nome": "MORANGO"
},
{
"pro_id": 18,
"pro_nome": "MANGA THOMY 12"
},
{
"pro_id": 19,
"pro_nome": "ABACAXI PEROLA TIPO 5"
},
{
"pro_id": 20,
"pro_nome": "ABACAXI PEROLA TIPO 15"
},
{
"pro_id": 21,
"pro_nome": "ABACAXI HAWAI 1IPO 4"
},
{
"pro_id": 22,
"pro_nome": "ABACAXI HAWAI TIPO 15"
},
{
"pro_id": 23,
"pro_nome": "ABACAXI HAWAI TIPO 5"
},
{
"pro_id": 29,
"pro_nome": "ABACAXI PEROLA TIPO 4"
},
{
"pro_id": 30,
"pro_nome": "ABACAXI PEROLA TIPO 5 PEQUENO"
},
{
"pro_id": 36,
"pro_nome": "ABACAXI HAWAI TIPO 10"
},
{
"pro_id": 41,
"pro_nome": "ABACATE"
},
{
"pro_id": 44,
"pro_nome": "AMEIXA IMPORT"
},
{
"pro_id": 45,
"pro_nome": "AMENDOIM TORRADO COM CASCA"
},
{
"pro_id": 51,
"pro_nome": "MARACUJA 3A"
},
{
"pro_id": 52,
"pro_nome": "MARACUJA 2A"
},
{
"pro_id": 53,
"pro_nome": "MANGA THOMY TIPO 15"
},
{
"pro_id": 56,
"pro_nome": "MAMAO PAPAIA TIPO 18"
},
{
"pro_id": 59,
"pro_nome": "MAMAO PAPAI 21"
},
{
"pro_id": 60,
"pro_nome": "COCO SECO 10"
},
{
"pro_id": 61,
"pro_nome": "COCO SECO 20"
},
{
"pro_id": 64,
"pro_nome": "MELAO TIPO 10"
},
{
"pro_id": 66,
"pro_nome": "MELAO TIPO7"
},
{
"pro_id": 68,
"pro_nome": "MACA FUJI 100 CAT1"
},
{
"pro_id": 70,
"pro_nome": "MACA FUJI 150"
},
{
"pro_id": 71,
"pro_nome": "MACA GALA CAT1 120"
},
{
"pro_id": 73,
"pro_nome": "MACA GALA 120 CAT2"
},
{
"pro_id": 76,
"pro_nome": "MELANCIA JAPONESA"
},
{
"pro_id": 77,
"pro_nome": "MELANCIA MEDIA"
},
{
"pro_id": 78,
"pro_nome": "MELANCIA PEQUENA"
},
{
"pro_id": 79,
"pro_nome": "MACA GALA150"
},
{
"pro_id": 80,
"pro_nome": "MACA GALA180"
},
{
"pro_id": 81,
"pro_nome": "MACA GALA216"
},
{
"pro_id": 82,
"pro_nome": "MACA GALA 135 CAT 1"
},
{
"pro_id": 84,
"pro_nome": "MACA FUJI120"
},
{
"pro_id": 85,
"pro_nome": "MACA FUJI GRANEL"
},
{
"pro_id": 86,
"pro_nome": "MACA GALA GRANEL"
},
{
"pro_id": 87,
"pro_nome": "MACA ARGENTINA100"
},
{
"pro_id": 88,
"pro_nome": "MACA VERDE "
},
{
"pro_id": 89,
"pro_nome": "PERA T90"
},
{
"pro_id": 90,
"pro_nome": "UVA RED GLOB"
},
{
"pro_id": 91,
"pro_nome": "UVA TOPSON"
},
{
"pro_id": 92,
"pro_nome": "PESSEGO IMPORT"
},
{
"pro_id": 94,
"pro_nome": "KIWI IMPORT"
},
{
"pro_id": 95,
"pro_nome": "NECTARINA "
},
{
"pro_id": 96,
"pro_nome": "PERA ESPANHOLA "
},
{
"pro_id": 97,
"pro_nome": "PERA PORTUGUESA"
}
]
}
但是我得到了这个例外Unterminated object at character 1927 of "MY JSON STRING"
这是我对URL执行HTTP请求的方法:
public String ConsultaServidor(String URL_STRING) throws IOException {
InputStream is = null;
try {
URL url = new URL(URL_STRING);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(10000);
conn.setReadTimeout(15000);
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.connect();
conn.getResponseCode();
is = conn.getInputStream();
Reader reader = null;
reader = new InputStreamReader(is);
char[] buffer = new char[4096];
reader.read(buffer);
return new String(buffer);
} finally {
if (is != null) {
is.close();
}
}
}
有人能帮我吗
# 1 楼答案
使用{cd1}而不是单独使用{cd1}
# 2 楼答案
解决方案是更改代码。正如Ankit所说,使用BufferedReader。。
最终代码如下:
# 3 楼答案
使用从输入流读取的单个缓冲区意味着,如果缓冲区中的字符数少于缓冲区中的字符数,那么字符串的结尾将有大量零字符(ASCII NUL-
'\u0000'
)如果你有更多的字符,而不是缓冲区的大小,那么你的字符串只包含前4096个字符,所以中间是剪切的。p>
读取输入流的常用方法是使用循环。您可以将整个输入流读入内存,也可以使用直接使用输入流的JSON解析器
因为我不知道您使用的是什么JSON解析器,所以我将演示一种方法
请注意,在这个方法中,您一直读取流,直到最后,也就是从
read
返回的值为-1
。每次你只附加实际读取的字符数(不一定是4096!)给字符串生成器还要注意的是,你在参考资料中进行了一次尝试,确保完成后关闭阅读器
另一种方法是使用
BufferedReader
并逐行读取,直到文件结束