返回信息流尝试用正则,发现做不到。。可能是我太菜了。
比如:
{
"fl11":"vvvvvvv",
"f112":123,
"f113":{
"f2111":"vvv",
"f2112":{....},
"可能更复杂结构"
}
}
但是希望map中只有f111,f112,f113, value是各自冒号后面的部分。
发现如果用主流的json解析器转成各自的json对象,是有嵌套处理的,都太慢了,也没必要。
于是想从字符串处理的方法来搞,没搞出来,看看有没有大佬能相助一把?
这是一条镜像帖。来源:北邮人论坛 / java / #62659同步于 2019/9/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
【问题】想对json格式字符串提取出首层key-value放到map中,有
xziping
2019/9/12镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
json是context free文法,正则就是正则文法,用正则文法处理context free必然是不可行的。
处理这种问题最简单的办法就是写个递归下降的parser转换成AST。
没太看得懂 value是各自冒号后面的部分 是啥意思
如果只解一层的话,4楼应该是最优解
不过如果真的做不到,那就只能按字符串硬解,value判断后面是啥,如果是{[,就把按栈做把value整个干掉,如果是非{[,直接拿value即可