1
4
这个语法看起来像JSON的一个子集,我猜客户端实际上是将其编码为JSON。假设这是真的,最简单的方法是使用现成的JSON解析器和一些简单的Java代码来将生成的对象转换为代码所需的形式。 当然,您可以手工实现自己的解析器,但这可能不值得这么做,特别是如果您必须处理字符串转义、空格中可能存在的变化等等。不要忘记,如果您实现了自己的解析器,那么 需要实现单元测试 在继续之前,您确实需要确认客户机发送给您的确切语法。仅仅看一个例子并不能回答这个问题。您要么需要一个指定语法的文档,要么需要查看客户机/应用程序源代码。 |
2
3
这里有一个简单的解析器,它应该处理所有类型的滥用嵌套,并且对单引号和双引号都很健壮——但是如果您将它们混合在一起,它不会在意
编辑:添加了注释,现在它处理字符串中的转义引号。(现在改进了字符串令牌处理)
注意:这不会强制你的语法正确,所以如果你像我描述的那样,用引号做一些愚蠢的事情,它可能仍然会被解析为(不)预期的。另外,我在al不强制使用逗号,引号之间甚至不需要空格,所以
|
3
2
因为您使用的字符串看起来像JSON,所以我只使用JSON解析器。最简单的用法之一是gson。下面是使用gson的示例:
这是gson网站: http://code.google.com/p/google-gson/ |
4
-2
您需要手工构建一个解析器。这不难,但需要时间。 只需逐个字符解析字符串,并通过首先定义递归解析规则来识别每个标记。递归后代解析器规则通常是图形化的,但是我可以尝试为您使用ABNF
另一种方法是使用正则表达式。这是几个样品。首先通过
上面的正则表达式捕获从“[”到第一个“]”的所有内容,但您需要修改它或从字符串中剪切方括号(只需删除第一个和最后一个字符) 然后通过
简单如上图 |