Шаблон регулярного выражения для удаления некоторых недопустимых элементов JSON - PullRequest
2 голосов
/ 25 апреля 2011

Спасибо за чтение!

Я пытаюсь проанализировать фид JSON в таком формате:


(bpjc{"menu": {
                  "id": "file",
                  "value": "File",
                  "popup": {
                    "menuitem": [
                      {"value": "New", "onclick": "CreateNewDoc()"},
                      {"value": "Open", "onclick": "OpenDoc()"},
                      {"value": "Close", "onclick": "CloseDoc()"}
                    ]
                  }
                }})

Я получил ошибку при разборе JSON и после использования JSON Validator, я понял, что (bpjc и закрывающий ) не является допустимым JSONObject и поэтому нужно удалить их из канала.

Итак, я написал регулярное выражение, как показано ниже:


        String regex = "\\(bpjc.*\\)";
        String input = "(bpjc{abcd})";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        System.out.println(matcher.matches());

Вывод true, но как мне извлечь {abcd}?

Я имею в виду Учебник по регулярным выражениям , но я не знаю, какой шаблон применим к моему случаю.

РЕДАКТИРОВАТЬ: Добавление учебника по синтаксическому анализу JSON , на который я ссылался,Я нашел это хорошо объясненным.

1 Ответ

4 голосов
/ 25 апреля 2011

Похоже, вы получаете неправильно отформатированный результат JSONP. Если вы знаете, что символы всегда будут присутствовать до и после, просто выполните подстроку:

json = json.substring(5, json.length-1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...