2018-07-21 python -m json.tool 在bash下有很多局限

  1. awk.json 只会被处理第一行。
    如果第一行是json但是包含了小括号,也会报错 No JSON object could be decoded。

这就是 python -m json.tool 的局限!

python -m json.tool awk.json

  1. 使用whil read来解决原来只有第一行被读取的问题。
    但是任何一行的json里包含了小括号,还是会报错 No JSON object could be decoded。其他行能解析的会被解析格式化。

cat awk.json |while read line;do echo "$line"|python -m json.tool;done

  1. 下面是从html文件日志中筛选出只包含json内容的行,都是以 { 开头的行:

cat cpctest_cpctestcode1.txt_2018-07-19T16-16-47.313.html|while read line;do echo "$line"|gawk '$0 ~ /^\{/{print $0}' >> awk.json;done

  1. 这个是基本一步到位的,只打算显示json格式化后的结果。
    但是含有小括号的行在bash下执行下面的命令还是无法被json格式化:

cat cpctest_cpctestcode1.txt_2018-07-19T16-16-47.313.html|while read line;do echo "$line"|gawk '$0 ~ /^\{/{print $0}'|python -m json.tool;done

  1. 并未实现的效果,一个文档某些行是json数据,达到非json数据原样输出,json数据格式化的效果。考虑了awk的模式匹配来判断,然后调用系统命令格式化json数据。但是也会有各类问题,所以没有搞这个了。

  2. 实践发现上述文件是从cpc的mongo导出的json数据,其中的_id和NumberLong在json viewer下也提示报错,所以认为这一点是影响python解析json的原因之一。

你可能感兴趣的:(2018-07-21 python -m json.tool 在bash下有很多局限)