Разделение строки через запятую (с некоторыми из '\ {[chars) - PullRequest
1 голос
/ 02 апреля 2012

Уже исправлена ​​моя проблема - пост можно удалить.Спасибо всем вам за помощь.

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

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

Мне нужно разделить ее, чтобы получить HashMap:

  1. key-> value1
  2. key2->value2
  3. key3 -> (внутренняя HashMap с проанализированным {'innerKey1' => 'innerValue1' ...})
  4. ...

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

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

1) Джексон

2) google-gson

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

0 голосов
/ 02 апреля 2012

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

To split - это просто и не удастся в особых случаях.

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

...