#java #json #format
#java #json #формат
Вопрос:
Я использую функцию автоматического предложения Bing, чтобы автоматически предлагать мне термины, заданные в запросе. Вы можете найти инструмент здесь: http://api.bing.com/osjson.aspx?query=pe как вы можете видеть, он возвращает странный формат, который не совсем JSON. Является ли этот конкретный стандарт отличным от JSON? Я попытался проанализировать его как JSON с помощью…
InputStream i = new URL(url).openStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(i, Charset.forName("UTF-8")));
JSONObject json = new JSONObject(readAll(reader));
но я получаю сообщение об ошибке A JSONObject text must begin with '{' found:" at 2 [character 3 line 1]
ReadAll =
private static String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
Комментарии:
1. Какое значение
readAll()
возвращает функция? Не могли бы вы опубликовать пример, пожалуйста?
Ответ №1:
Ваш пример является допустимым JSON:
["pe",["people","people search","petsmart","petco","petfinder","pep boys","people finder","people of walmart"]]
Это не объект, это массив, который содержит строку в первой позиции и другой массив во второй. Поэтому попробуйте проанализировать как JSONArray
, а не как JSONObject
.
Ответ №2:
Объект JSON начинается с a {
и заканчивается a }
, JSONObject
для анализа которого был разработан класс. Массив JSON начинается с a [
и заканчивается a ]
, JSONArray
для анализа которого был разработан класс.
Надеюсь, это поможет.