英语法语西班牙语

Ad


OnWorks 网站图标

jshon - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 jshon

这是 jshon 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


杰雄 — 用于外壳的 JSON 解析器

概要


杰雄 -[P|S|Q|V|C|I|0] [-F 路径] -[t|l|k|u|p|a] -[s|n] 值 -[e|i|d]指数

商品描述


杰雄 解析、读取和创建 JSON。 它被设计为尽可能可用
在外壳内并替换由 grep/sed/awk 以及
由 perl/python 制作的重量级单行解析器。

杰雄 从标准输入加载 json 文本,执行操作,然后在标准输出上显示最后一个操作。
一些选项输出 json,其他选项输出纯文本摘要。 因为 Bash 有很多
糟糕的嵌套数据结构, 杰雄 不作为典型的本机对象返回 JSON
图书馆会。 反而 杰雄 在堆栈中保留编辑历史,您可以操作
最顶层的 JSON 元素。

行动


每个操作都采用简短选项的形式。 有些需要争论。 虽然很多情况
of 杰雄 可以通过彼此管道,动作应该顺序链接以减少
调用。 所有示例都使用此 json 示例:

{"a":1,"b":[true,false,null,"str"],"c":{"d":4,"e":5}}
jshon [动作] < sample.json

最常见的只读用途只需要几个 -e 行动和一 -a 在中间
他们。

-t (类型)返回字符串、对象、数组、数字、布尔值、空值

jshon -t -> 对象

-l (length) 返回一个整数。 仅适用于字符串、对象、数组。

jshon -l -> 3

-k (keys) 返回以换行符分隔的键列表。 仅适用于对象。

jshon -k -> abc

-e 指数
(提取)在“索引”处返回 json 值。 仅适用于对象、数组。 的索引
数组是一个整数。

jshon -ec -> {"d":4,"e":5}

-a (cross) 将剩余的操作映射到所选元素。 仅适用于对象
和数组。 多种的 -a 调用可以嵌套,但在实践中很少需要。

jshon -eb -a -t -> bool bool 空字符串

-s 折扣值
(string) 返回一个 json 编码的字符串。 以后可以 (-i) 插入到现有的
结构。

jshon -s "back\slash" -> "back\\slash"

-n 折扣值
(nonstring/number) 返回一个 json 元素。 以后可以 (-i) 插入到现有的
结构体。 有效值为“true”、“false”、“null”、“array”、“object”、整数和
漂浮。 缩写 t、f、n、[] 和 {} 也分别有效。

jshon -n 对象 -> {}

-u (unstring) 返回解码后的字符串。 仅适用于简单类型:string、int、real、
布尔值,空值。

jshon -eb -e 3 -u -> str

-p (pop) 从堆栈中弹出最后一个操作,倒带历史。 对...有用
从一个对象中提取多个值。

jshon -ec -ed -u -p -ee -u -> 4 5

-d 指数
(delete) 删除数组或对象中的项目。 负数组索引将换行
周围。

jshon -db -> {"a":1,"c":{"d":4,"e":5}}

-i 指数
(插入)很复杂。 它与提取物相反。 Extract 放一个 json 子元素
在堆栈上。 插入从堆栈中删除一个子元素,并插入该位 json
进入下面更大的数组/对象。 使用提取物深入到 json 树中,
删除/字符串/非字符串以更改内容,并插入以将更改推回
树。

jshon -ea -ia -> 原始 json
jshon -s one -ia -> {"a":"one", ...}

数组以特殊方式处理。 传递整数将插入一个不带值的值
覆盖。 负整数是可以接受的,字符串 'append' 也是如此。 覆盖
数组中的一个值:删除索引, -n/s 新值,然后在索引处插入。

jshon -eb -d 0 -sq -i 0 -> {"b":"q",false,null,"str"}

非操纵


有几个元选项不直接编辑 json。 每次最多调用一次
调用。

-F
(file) 从文件而不是 stdin 读取。 采取的唯一非操纵选项
论据。

-P (jsonp) 在正常继续之前去除 jsonp 回调。

-S (sort) 返回按键排序的 json,而不是原始排序。

-Q (quiet) 禁用 stderr 上的错误报告,因此您不必撒上“2> /dev/null”
在整个脚本中。

-V (by-value) 在编辑历史堆栈上启用按值传递。 在极端情况下
数以千计的深度嵌套值,这可能会导致 杰雄 运行速度慢了几倍
同时使用数倍的内存。 然而,按值比按引用更安全,并且
一般不会引起太大的意外。 默认情况下启用按引用,因为没有
在只读操作期间存在风险,并且通常使编辑 json 更加方便。

jshon -ec -n 7 -id -p -> c["d"] == 7
jshon -V -ec -n 7 -id -p -> c["d"] == 5
jshon -V -ec -n 7 -id -ic -> c["d"] == 7

-V , 更改必须通过堆栈手动插入回,而不是简单地
弹出中间值。

-C (继续)关于潜在的可恢复错误。 例如,提取不
存在会将“空”添加到编辑堆栈而不是中止。 行为可能会改变
未来。

-I (就地)文件编辑。 需要修改文件,因此只能与 -F 一起使用。 这是
用于对 json 文件进行细微更改。 使用时,正常输出被抑制
并写出编辑堆栈的底部。

-0 (空分隔符)将 -u 的分隔符从换行符更改为空值。 这个选项
只影响 -u 因为这是换行符唯一可以合法出现在
输出。

- 版
返回 YYYYMMDD 时间戳并退出。

其他 工具


杰雄 每行总是输出一个字段。 许多 Unix 工具需要多个选项卡分隔
每行字段。 通过“粘贴”管道输出以解决此问题。 但是,粘贴不能
处理空行,所以用占位符填充它们。 下面是一个例子:

杰森... | sed 's/^$/-/' | 粘贴 -s -d '\t\t\n'

这将用“-”替换空白并将每三行合并为一行。

产生json输出的工具越来越多。 通常这些使用面向行的
json/plaintext 混合,其中每一行都是一个独立的 json 结构。 可悲的是这意味着
整个输出不是合法的 json。 要么逐行循环遍历数据
(打电话 杰雄 每行一次)或将其转换为合法的 json 数组。 例如:

读行时; 做 jshon <<< "$line"; 完成 < <(journalctl -o json)

journalctl -o json | sed -e '1i[' -e '$!s/$/,/' -e '$a]' | 杰雄

巴厘岛高尔夫球场


如果您关心极短的单衬里,则可以在不考虑时压缩参数
造成歧义。 来自的例子 -流行音乐) 可以打高尔夫球如下:

jshon -ec -ed -u -p -ee -u == jshon -ec -ed -upee -u

我不建议这样做(这会让事情变得更难理解)但有些人
高尔夫,不顾后果。

创作 JSON


杰雄 可以通过传递一个空对象作为输入来创建 json:

jshon -s one -ia <<< "{}"

作者


杰雄 由凯尔·基恩 (Kyle Keen) 撰写[电子邮件保护]> 带有 Dave Reisner 的补丁
<[电子邮件保护]>、AndrewF(BSD、OSX、jsonp、排序)和 Jean-Marc A(solaris)。

使用 onworks.net 服务在线使用 jshon


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad