Формат следующего ответа?

#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 для анализа которого был разработан класс.

Надеюсь, это поможет.