2012-04-02 4 views
1

Уже исправлена ​​моя проблема - сообщение можно удалить. Спасибо всем вам за помощь.Разделение разделенной запятой строки (с некоторыми из « {[chars])

Мне нужна помощь с разбиением строки на Java. У меня есть строка, как это:

{'key'=>value1,'key2'=>'value2','key3'=>{'innerKey1'=>'innerValue1'...} ...} 

мне нужно разбить его, так что я бы HashMap:

  1. кнопочная> VALUE1
  2. key2-> value2
  3. KEY3 -> (внутренняя HashMap с разобранной { 'innerKey1' => 'innerValue1' ...})
  4. ...

Это должно сработать, когда я пытаюсь проанализировать значение из key3, он разделил бы его снова таким же образом. Могут быть много уровней внутренних элементов. Мне также нужно, чтобы он работал со специальными символами, такими как «или» в разделе «ключ» и «ценность». Я что-то вроде этого:

result = string.split(",(?=([^\"]*\"[^\"]*\")*(?![^\"]*\"))"); 

, но я не знаю, как лечить весь {...} в качестве значения не разделив его запятыми.

Я думаю об использовании JSON для этого, но, возможно, кто-то знает какое-то регулярное выражение или небольшую функцию, которая будет быстрее, чем полагаться на библиотеки JSON.

+0

Вы делаете свою собственную сериализацию, что является плохими идеями. Если у вас есть какая-то удаленная возможность исправить эту строку в JSON (или какой-либо другой последовательный формат), пожалуйста, сделайте это. Изучение JSON не намного больше, чем вызов функций кодирования/декодирования. Вы не сможете легко анализировать такие структуры, используя regexp. – Nanne

+0

Я знаю, но устаревший код, и у вас нет выбора – user1307657

ответ

0

Строка, которую вы пытаетесь разобрать, определенно JSON. И ИМО, вместо того, чтобы заново изобретать свой собственный JSON синтаксического анализа библиотеки, пожалуйста, рассмотреть вопрос об использовании:

1) Jackson

2) google-gson

Я лично предпочитаю Джексона из-за его простоты.

0

Вы должны скорее рассмотреть парсер .

К сплит - это просто и провалится в особых случаях.

И a парсер способен генерировать комплексные сообщения об ошибках. С расщеплением вы очень быстро потерялись