Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Usage

In [1]: from half_json.core import JSONFixer

In [2]: f = JSONFixer()

In [3]: f.fix('[{')
Out[3]: FixResult(success=True, line='[{}]', origin=False)

In [4]: f.fix('{"a')
Out[4]: FixResult(success=True, line='{"a":null}', origin=False)

目标

修复残破的 json

修复原理

  1. 根据异常提示来做一些操作, json 预期啥给啥

  2. 根据文本前后,删除一些 BadCase

HitRatio

./runtest.sh
# 查看准确率
seq 1 10|xargs -I {} ./runtest.sh|grep ratio: |awk '{t += $3; h+= $6}{print h/t}'|tail -1
  1. 0.4269, 0.4287, 0.4303 # 实现完 12 条规则

  2. 0.5037, 0.5084, 0.5077 # string 的 “ 补充在末尾

  3. 0.5259, 0.5224, 0.5187 # Array 需要 pos - 2

  4. 0.5433, 0.5311, 0.5381 # Array 细化一下 [, 的情况

  5. 0.7192, 0.7216, 0.7265 # 大改进, FIX 之前的 Bug( parser 被冲掉了)

  6. 0.7732, 0.7686, 0.7701 # case: {“a”:1 –> 补充 }

  7. 0.60 , 0.58 # 去掉了空行

  8. 0.6971, 0.6969, 0.6984 # 增加处理 StopIteration

  9. 0.7428, 0.7383, 0.7427 # 增加处理 half parse

  10. 0.7617,0.7631, 0.7558 # 细化处理 half parse

  11. 0.7608,0.7612, 0.7650 # 添加从左处理

  12. 0.9817,0.9827, 0.9819 # 增加对字符串的处理

  13. 0.8314,0.8302, 0.8312 # 去掉对字符串的额外处理

目前的缺点 && 发现

  1. 数字的支持比较弱 –> -02 / 0. / .0

  2. 还不支持分支回溯 –> [{]

  3. 突然想到, 应该反思一下, 这个是一个fixer, 而不是一个将任何字符串都转为 json 的东西 应该明确 JSONFixer 的能力范围, 对 runratio.sh 也应该比较前后两个的 json 相似程度。 (听起来像无能者的辩白?)

TODO

  1. 考虑分支回溯的方式来试探

  2. 解析缺失的 JSON 常量

BadCase

  1. 1- –> {“1-”: null}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jsonfixer-0.1.4b2.tar.gz (6.1 kB view details)

Uploaded Source

File details

Details for the file jsonfixer-0.1.4b2.tar.gz.

File metadata

  • Download URL: jsonfixer-0.1.4b2.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/2.7

File hashes

Hashes for jsonfixer-0.1.4b2.tar.gz
Algorithm Hash digest
SHA256 ca05e74f87d6d416c3e3c3f4b2d6c15594bbfaadddcdd6f5b5d2d0e01b0026f5
MD5 dc6766cddad3a19bdfee0151bdb55d5a
BLAKE2b-256 3cc4d941cc5c5cbbdfc58dc2228c115c68e343b461ee593a43fe1f4e27ae2ad9

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.2

2 files

0.2.0

2 files

0.1.4

1 file

This release

0.1.4b2 This release

1 file

0.1.2

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page