我想得到"路径"从下面的json文件;我使用json.load来获取读取的json文件,然后使用data.items()中的key,value逐个解析它导致很多for循环(Say 6循环)以获得"的值。路径&#34 ;;有没有简单的方法来检索路径的值?
可以找到完整的json文件here,下面是它的片段。
{
"products": {
"com.ubuntu.juju:12.04:amd64": {
"version": "2.0.1",
"arch": "amd64",
"versions": {
"20161129": {
"items": {
"2.0.1-precise-amd64": {
"release": "precise",
"version": "2.0.1",
"arch": "amd64",
"size": 23525972,
"path": "released/juju-2.0.1-precise-amd64.tgz",
"ftype": "tar.gz",
"sha256": "f548ac7b2a81d15f066674365657d3681e3d46bf797263c02e883335d24b5cda"
}
}
}
}
},
"com.ubuntu.juju:14.04:amd64": {
"version": "2.0.1",
"arch": "amd64",
"versions": {
"20161129": {
"items": {
"2.0.1-trusty-amd64": {
"release": "trusty",
"version": "2.0.1",
"arch": "amd64",
"size": 23526508,
"path": "released/juju-2.0.1-trusty-amd64.tgz",
"ftype": "tar.gz",
"sha256": "7b86875234477e7a59813bc2076a7c1b5f1d693b8e1f2691cca6643a2b0dc0a2"
}
}
}
}
},
答案 0 :(得分:1)
您可以使用递归生成器:
mkdir($folderpath.$name);
chmod($folderpath.$name",777);
答案 1 :(得分:0)
add_role('basic_contributor', 'Basic Contributor', array(
'read' => true, // True allows that capability
'edit_posts' => true,
'delete_posts' => false, // Use false to explicitly deny
));
键始终位于加载的json中的相同深度(这是path
所以)?如果是这样,那么做什么
dict
如果没有,Yevhen Kuzmovych的答案显然比我的更好,更清洁,更一般。
答案 2 :(得分:0)
如果您只关心路径,我认为使用任何JSON解析器都是一种矫枉过正,您可以使用内置的re rex并使用以下模式(\"path\":\s*\")(.*\s*)(?=\",)
。我没有测试整个文件,但应该能够很容易地找出最好的模式。
答案 3 :(得分:0)
如果您只需要路径字段中的文件名,只需解析文件即可轻松获取它们:
import re
files = []
pathre = re.compile(r'\s*"path"\s*:\s*"(.*?)"')
with open('file.json') as fd:
for line in fd:
if "path" in line:
m = pathre.match(line)
if m is not None:
files.append(m.group(1))
如果您需要同时处理path
和sha256
字段:
files = []
pathre = re.compile(r'\s*"path"\s*:\s*"(.*?)"')
share = re.compile(r'\s*"sha256"\s*:\s*"(.*?)"')
path = None
with open('file.json') as fd:
for line in fd:
if "path" in line:
m = pathre.match(line)
path = m.group(1)
elif "sha256" in line:
m = share.match(line)
if path is not None:
files.append((path, m.group(1)))
path = None
答案 4 :(得分:-1)
您可以使用JSONPath之类的查询语言。在这里,您可以找到Python实现:https://pypi.python.org/pypi/jsonpath-rw
假设您已经加载了JSON内容,您可以执行以下操作:
from jsonpath_rw import jsonpath, parse
# Load your JSON content first from a file or from a string
# json_data = ...
jsonpath_expr = parse('products..path')
for match in jsonpath_expr.find(json_data):
print(match.value)
有关进一步的讨论,请参阅:Is there a query language for JSON?