2012-04-02 177 views
1

已经解决了我的问题 - 帖子可以删除。感谢你们所有人的帮助。分割逗号分隔的字符串(与一些' {[字符)

我需要一些在Java中分割字符串的帮助。我有一个这样的字符串:

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

我需要拆分它,这样我会有的HashMap:

  1. 键 - >值1
  2. key2->数值2
  3. KEY3 - >(与解析{ 'innerKey1'=> 'innerValue1' ...})内的HashMap
  4. ...

它应该工作,当我尝试从key3解析值时,它会以相同的方式再次分割它。内部元素可能有很多层次。我还需要它来处理特殊字符,如'或\键和值部分。我使用的是这样的:

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

,但我不知道如何对待整个{...}的价值不是用逗号分割的。

我在想为此使用JSON,但也许有人知道一些正则表达式或小函数会比倾斜JSON库更快。

+0

你正在做你自己的序列化,这是一个坏主意。如果您有一些远程可能性将该字符串修复为JSON(或其他序列化格式),请执行此操作。学习JSON不仅仅是调用编码/解码功能。你不能使用regexp轻松地解析这样的结构。 – Nanne 2012-04-02 09:53:59

+0

我知道,但遗留代码,你没有太多的选择 – user1307657 2015-07-24 13:01:51

回答

0

你试图解析它的字符串肯定是JSON。和国际海事组织,而不是重新发明自己的JSON解析库,请考虑使用:

1)Jackson

2)google-gson

我个人比较喜欢,因为它杰克逊的简单性。

0

你应该考虑一个解析器

拆分只是为了简单,并将在特殊情况下失败。

解析器能够生成全面的错误消息。 随着分裂你非常快非常丢失