解析JSON的一种更简单的方式。
项目描述
JSane是一个JSON“解析器”,它使得属性访问更加容易。
三行简介
>>> import jsane >>> j = jsane.loads('{"foo": {"bar": {"baz": ["well", "hello", "there"]}}}') >>> j.foo.bar.baz[1].r() u'hello'
动机
想象一下场景。你是一名穿梭于各大城市、痴迷于健身的开发者。有一天,一位世界级的珠宝大盗绑架了你,并要求你在30秒内黑入超级安全的银行服务器,同时一位超模在你面前进行口交。你急忙追踪网络上的协议,却惊讶地发现它使用的是JSON。嵌套的JSON,有层层叠叠的键。
毫无希望!你永远也来不及输入所有那些括号和引号!突然,你脑海中闪过一个记忆,就像一个糟糕的README中的陈词滥调。你打开shell,输入了两个词
import jsane
动机(非好莱坞版本)
你是否对必须逐个遍历嵌套的JSON键感到沮丧?
root = my_json.get("root") if root is None: return None key1 = root.get("key1") if key1 is None: return None key2 = key1.get("key2") if key2 is None: return None <five more times>
你的代码是否被讨厌的捕获所有异常的except块所破坏?
try: my_json["root"]["key1"]["key2"]["key3"] except: return None
你是否厌倦了总是输入所有的大括号和引号?
my_json["root"]["key1"[""]][]"]']'"}}""]
现在有了JSane!
动机(非广告版本)
好吧,说真的,this["thing"]["is"]["no"]["fun"]。JSane让你像这样遍历.json.r()。就是这样。
用法
使用JSane非常简单,至少。它基本上是内置的json模块的一个副本。
首先,使用pip或easy_install安装它
pip install jsane
以下是它的用法示例
>>> import jsane >>> j = jsane.loads('{"some": {"json": [1, 2, 3]}}') >>> j.some.json[2].r() 3
- 您还可以加载现有的字典:
>>> j = jsane.from_dict({"hi": "there"}) >>> j.hi 'there'
如果字典包含任何在JSON中无效的数据类型(如函数),它仍然应该工作,但您需要自己处理。
由于Python是一种合理的语言,因此你可以用它搞砸的事情有限,所以JSane实际上在访问时会返回一个可遍历的对象
>>> j = jsane.loads('{"foo": {"bar": {"baz": "yes!"}}}') >>> type(j.foo) Traversable
如果你想在你这次疯狂的属性之旅结束时得到你的真实对象,请调用.r()
>>> j.foo.bar.r() {"baz": "yes!"}
如果在过程中某个属性、项目或索引不存在,你将得到一个异常。你可以通过指定一个默认值来消除它
>>> import jsane >>> j = jsane.loads('{"some": "json"}') >>> j.haha_sucka_this_doesnt_exist.r(default="💩") "💩"
“但是我怎么访问名为r的键呢?”你可能问。不用担心,我已经为你想好了
>>> j.key["r"].more_key.r()
困惑吗?那么就别用r作为键名。
就这些了。我对r() API并不感冒,所以如果有人有任何关于如何更好地实现我的邪恶目的的好建议,我会立即更改它。在版本1之前,没有稳定性保证。正如往常一样,semver给予,semver夺取。
需要帮助/欢迎等,主要是关于设计API。此外,如果你觉得这个库没有用,请告诉我。
许可证
BSD。或者MIT。不管LICENSE文件里写的是什么。我忘记了。但是它是宽容的,所以请放松。
自我推销
是我,Stavros。
常见问题解答
你发现JSane的README疯狂吗?这很讽刺吗?
不。
这个库很棒吗?
是的。
我讨厌.r()这个方法,有没有什么方法可以避免它?
你甚至看过了这个README吗?
好吧,现在有一个避免它的方法。你不需要调用j.foo.bar.r(),你只需调用最后一个键,即j,foo.bar()。告诉我你的想法在这个相关的问题上。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。
源代码分发
构建分发
jsane-0.1.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fb1b4cf6c5590aa4c89b00810eb93878aae1bc780199b6fbba3e796fabc5c443 |
|
MD5 | f5d0589b15a8918f553c742afa8dc366 |
|
BLAKE2b-256 | a2f662770a87363bc1593b529b1738dab628586f47df0b7aa41d1d9b42aab0b8 |
jsane-0.1.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b9649598966f4825273d24ffe3f5957e410cae96086d6cc6e3227b3a63ff06cd |
|
MD5 | 5d95938afd5c8bef62ff7a1c81e1e6d6 |
|
BLAKE2b-256 | b3963e29ac301a24f7f2cc46d024c76263a0a3ee1885bf7776c63d17b658a9eb |