gpt4 book ai didi

json - 在 shell 中解析 JSON

转载 作者:行者123 更新时间:2023-12-03 22:47:59 24 4
gpt4 key购买 nike

我如何在shell中做字典结构?我的目标是生成随机单词。前任。脏鱼、好书、丑陋的钢琴或意大利面、giallo 手杖……它的 js 代码看起来像这样

    words ={

"italian" :
{
"name" :
[
"gatto",
"cane",
"pasta",
"telefono",
"libro"
],

"adjective" :
[
"pesante",
"sottile",
"giallo",
"stretto",
]
},
"english" :
{
"name" :
[
"fish",
"book",
"guitar",
"piano",
],
"adjective" :
[
"dirty",
"good",
"ugly",
"great",
]
}}

我要这个:
words[english][adjective][1]
>> good

最佳答案

本身不能存储复杂的数据结构,但是像大多数情况下在 shell 中一样,您可以使用外部工具,我在这里演示了 6 种不同的解决方案,都在 Unix* 类 shell 中:

首先,您的 JSON已损坏,这是 file.js 中的有效版本:

{
"italian" : {
"name" : [
"gatto",
"cane",
"pasta",
"telefono",
"libro"
],
"adjective" : [
"pesante",
"sottile",
"giallo",
"stretto"
]
},
"english" : {
"name" : [
"fish",
"book",
"guitar",
"piano"
],
"adjective" : [
"dirty",
"good",
"ugly",
"great"
]
}
}

使用
$ jq '.english.adjective[1]' file.js

输出:
good

一起玩 jqRANDOM shell 变量:
$ echo $(
jq ".english.adjective[$((RANDOM%4))], .english.name[$((RANDOM%4))]" file.js
)
"great" "piano"

jq ,见 tutorial .

使用
$ rhino<<EOF 2>/dev/null
hash = $(<file.js)
print(hash.english.adjective[1])
EOF

输出:
...
good

使用
$ node<<EOF
hash = $(<file.js)
console.log(hash.english.adjective[1])
EOF

输出 :
good

使用

让我们在 perl 命令行中解析 DS:
$ perl -MJSON -0lnE '
$words = decode_json $_;
say $words->{english}->{adjective}->[1]
' file.js

输出:
good

使用
$ python<<EOF
import json
json_data = open('file.js')
data = json.load(json_data)
json_data.close()
print(data['english']['adjective'][1])
EOF

输出:
good

使用
$ ruby<<EOF
require 'json'
file = File.read('file.js')
data = JSON.parse(file)
print(data['english']['adjective'][1])
EOF

输出:
good

关于json - 在 shell 中解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27127091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com