与UNIX的JSON接口
我对JSON交互非常陌生,对此我没有什么疑问。下面是基本的一个 1) 我们如何通过Unix调用/调用/打开JSON文件,我的意思是假设我有一个JSON中的metedata文件,那么我应该如何从JSON文件中获取/更新值backborth 2) 需要一个例子,关于如何互动 3) unixshell如何与JSON兼容,是否有比Shell脚本更好的技术/语言/工具 谢谢, NikhilJSON只是文本 使用文本编辑器并遵循规则。一些具有“JSON模式”的编辑器将有助于[无效]语法高亮显示、缩进和大括号匹配 “unixshell”与JSON没有直接关系-Shell如何与文本或XML文件相关 有一些处理JSON的实用程序可能有用,例如-但这实际上取决于需要对JSON做什么(最终只是文本)。JSON是一种存储字符串、布尔值、数字、列表和dict及其组合的格式(数字dict指向包含字符串的列表等)。可能您要存储的数据具有某种适合这些类型的结构。考虑并考虑使用上面给出的类型的有效表示。 例如,如果您的文本配置如下所示:与UNIX的JSON接口,json,unix,Json,Unix,我对JSON交互非常陌生,对此我没有什么疑问。下面是基本的一个 1) 我们如何通过Unix调用/调用/打开JSON文件,我的意思是假设我有一个JSON中的metedata文件,那么我应该如何从JSON文件中获取/更新值backborth 2) 需要一个例子,关于如何互动 3) unixshell如何与JSON兼容,是否有比Shell脚本更好的技术/语言/工具 谢谢, NikhilJSON只是文本 使用文本编辑器并遵循规则。一些具有“JSON模式”的编辑器将有助于[无效]语法高亮显示、缩进和大括号
Section
Name=Marsoon
Size=34
Contents
foo
bar
bloh
EndContents
EndSection
Section
Name=Billition
Size=103
Contents
one
two
three
EndContents
EndSection
…然后这看起来像是一个dict列表,其中包含一些字符串和数字以及一个字符串列表。Json中的有效表示形式为:
[
{
"Name": "Marsoon",
"Size": 34,
"Contents": [
"foo", "bar", "bloh"
]
},
{
"Name": "Billition",
"Size": 103,
"Contents": [
"one", "two", "three"
]
},
]
但是,如果您知道每个这样的字典都有不同的名称
,并且总是相同的字段,那么您不必存储字段名称,并且可以使用名称
作为字典的键;因此,您也可以将其表示为字符串的dict,指向包含数字和字符串列表的列表:
两者都是原始文本配置的有效表示形式。您将如何选择主要取决于您是否希望对数据结构的后续更改保持开放(第一种解决方案更好),或者是否希望避免官僚开销
这样的Json可以存储为简单的文本文件。使用您喜欢的任何文本编辑器进行此操作。请注意,所有空格都是可选的。最后一个示例也可以写成一行:
{"Marsoon":[34,["foo","bar","bloh"]],"Billition":[103,["one","two","three"]]}
因此,有时计算机生成的Json可能很难阅读,需要一个至少能够处理很长行的编辑器
在shell脚本中处理这样的Json文件并不容易,因为shell不知道这种复杂类型的概念。它能正确处理的最复杂的是指向字符串(bash数组)的字符串dict。所以我建议寻找一种更合适的语言,e。Gpython在Python中,您可以非常高效地处理所有这些结构,并使用非常可读的代码:
import json
with open('myfile.json') as jsonFile:
data = json.load(jsonFile)
print data[0]['Contents'][2] # will print "bloh" in the first example
# or:
print data['Marsoon'][1][2] # will print "bloh" in the second example
我的项目中的基本要求是,我使用Shell脚本从文件、表中提取数据,并将所有数据登录到本地文件系统。因此,我只是以文件(.txt)格式存储这些文件和表的数据。现在我必须以JSON格式存储thsoe元数据,它与许多其他实用程序兼容。因此,我需要知道如何才能做到这一点。我的项目的基本要求是,我使用Shell脚本从文件、表中提取数据,并将所有数据登录到本地文件系统。因此,我只是以文件(.txt)格式存储这些文件和表的数据。现在我必须以JSON格式存储thsoe元数据,它与许多其他实用程序兼容。所以我需要知道我怎样才能做到this@user3205631然后查找完成任务所需的[单个]工具或实用程序。在某种程度上,只使用一种支持JSON和动态结构的语言(例如Perl、Ruby、Python、TCL)可能比在“Unix Shell”中完成所有工作更容易。在相当早期的时候,只使用一种语言会更容易:)
import json
with open('myfile.json') as jsonFile:
data = json.load(jsonFile)
print data[0]['Contents'][2] # will print "bloh" in the first example
# or:
print data['Marsoon'][1][2] # will print "bloh" in the second example