У меня проблемы с некоторыми разборками basi c JSON - PullRequest
0 голосов
/ 21 января 2020

Возврат из внешнего приложения - это поток ввода, который выглядит следующим образом:

JSONObj = {    
           "output":
             [
               {
                 "box":[0, 44, 43, 189],
                 "text":"~9 000 -"
               }
             ]
          }

У меня проблемы с анализом JSON в Java

. JSONOBJ продолжает возвращаться как недействительный токен.

Есть ли способ просто начать анализ в '['?

Ответы [ 3 ]

0 голосов
/ 21 января 2020

Бросив это в любой приличный парсер JSON, вы скажете, что это неверно JSON.

В частности, в строке 6 вы должны удалить разрывы строк вручную, так как JSON разрешает только явное те, которые используют линейный разделитель \n:

{
  "output": [
    {
      "box": [
        0,
        44,
        43,
        189
      ],
      "text": "~9 000 -"
    }
  ]
}
0 голосов
/ 21 января 2020

Самый простой способ может быть:

json = json.substring(json.indexOf('{'))

И я на самом деле не согласен с утверждением Никтара, так как эта внешняя программа даже не возвращает действительное JSON (и я считаю это очень и очень глупым реализация должна быть откровенной). Нет необходимости говорить «эй, это объект», потому что это на самом деле неявно. Если JSON начинается с {, это объект, если он начинается с [, это массив.

0 голосов
/ 21 января 2020

Я бы посоветовал не манипулировать JSON перед его разбором. Если вы хотите вырезать детали, это признак того, что ваша целевая структура данных (класс Java, который вы собираетесь получить) не соответствует данным, которые вы получаете. Эти два должны быть в синхронизации c.

...