我的字符串输入是一样的东西:通过正则表达式替换字符串的一部分
{"key1":"value1","key2":"{\"key2_1\":\"123\",\"key2_2\":\"456\",\"key2_3\":\"33333\"}"}
在上面的JSON值的字段可以包含如"
,\
等字符。为了您的方便易用这里是格式化版本:
{
"key1": "value1",
"key2": "{\"key2_1\":\"123\",\"key2_2\":\"456\",\"key2_3\":\"33333\"}"
}
我想用GSON到字符串转换为Foo对象:
class Foo {
private String key1;
private Bar key2;
...
}
class Bar {
private String key2_1;
private String key2_2;
private String key2_3;
...
}
这里是我的正则表达式:
String regexp = "\\{[\"a-zA-Z-0-9:,\\\\]*\"key2\":\"\\{\\\\\"key2_1\\\\\":\\\\\"[a-zA-Z0-9]*\\\\\",\\\\\"key2_2\\\\\":\\\\\"[a-zA-Z0-9]*\\\\\",\\\\\"key2_3\\\\\":\\\\\"[a-zA-Z0-9]*\\\\\"\\}\"\\}[\"a-zA-Z-0-9:,\\\\]*";
Pattern pattern = Pattern.compile(regexp);
Matcher matcher = pattern.matcher(text);
if(matcher.matches()) {
... // TODO: Replace all "{, \" and }" but How???
}
我怎样才能用这个正则表达式来代替"{
,\"
。和"}
到{
,"
,}
而不更改JSON中的键和值?
查找子字符串并使用String的替换方法将是我的备份解决方案。
同样,我的最终目标是解析输入字符串到我的Foo对象。有没有更好的方法,而不是使用正则表达式?
谢谢!
它不应该像这样正常工作吗? – Shark
@Shark Matcher只返回一个布尔值。我不能通过“就像这样”将字符串转换为对象。请注意key2的输入值是一个字符串,而在Foo对象中相应的字段是Bar对象。 –
我的意思是,JSON已经包含一个'Bar'对象;它不应该罚款到一个'Foo'实例吗? – Shark