-
Notifications
You must be signed in to change notification settings - Fork 0
/
json_viewer.py
148 lines (121 loc) · 4.42 KB
/
json_viewer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
import json
def go_back(item, parents,step=-2):
"""
element of dictionary, all previous elements ->
previous element, all previous elements without current one
The function turns back in the tree
"""
try:
item = parents[step]
if len(parents) > 2:
parents = parents[:-1]
except:
item = data
parents = [data]
return item, parents
def for_dict(item, parents):
"""
this function is to display and navigate through the dictionary
"""
while True:
if type(item) == list:
for_list(item, parents)
break
if type(item) != dict:
print()
print("The value is",item)
print()
answ = input(" You are in the lovest stage of the json file"+
"\nWould you like to go back? [Y/N] ")
if len(answ) < 1:
break
while answ != "Y" and answ != "N":
answ = input(" You are in the lovest stage of the json file"+
"\nWould you like to go back? [Y/N] ")
if len(answ) < 1:
break
if answ == "Y":
item, parents = go_back(item, parents)
continue
else :
break
print()
print("---There are these keys in the chosen dictionary---")
for el in item.keys():
print(el)
# print("--------------------------")
print()
answ = input("In whick key would you like to go in the dictionary?"+
"\nor enter 'gb' to go back in the tree ")
if len(answ) < 1:
break
# item = answ
while answ not in item.keys() and answ != "gb":
answ = input("In whick key would you like to go in the dictionary?"+
"\nor enter 'gb' to go back in the tree ")
if len(answ) < 1:
break
if answ == "gb":
item, parents = go_back(item, parents)
continue
item = item[answ]
parents.append(item)
def for_list(item, parents):
"""
this function is to display and navigate through the list
"""
while True:
if type(item) == dict:
for_dict(item, parents)
break
if type(item) != list and type(item) != dict:
print()
print("The value is", item)
print()
answ = input(" You are in the lovest stage of the json file"+
"\nWould you like to go back? [Y/N] ")
if len(answ) < 1:
break
while answ != "Y" and answ != "N":
answ = input(" You are in the lovest stage of the json file"+
"\nWould you like to go back? [Y/N] ")
if len(answ) < 1:
break
if answ == "Y":
item, parents = go_back(item, parents)
continue
else :
break
print()
print("---You are in the chosen list item---")
print(f"---Here are {len(item)} elements with the same keys---")
print()
while True:
try:
answ = input(f"In which list item would you like to go? (only number from 1 to {len(item)})"+
"\nor enter 'gb' to go back ")
if len(answ) < 1:
break
# item = answ
while answ != "gb" and (int(answ) - 1) not in range(len(item)):
answ = input(f"In which list item would you like to go? (only number from 1 to {len(item)}) "+
"\nor enter 'gb' to go back ")
if len(answ) < 1:
break
break
except:
continue
if len(answ) < 1:
break
if answ == "gb":
item, parents = go_back(item, parents)
continue
item = item[int(answ) - 1]
parents.append(item)
if __name__ == "__main__":
path = "Twitter.json"
with open(path, 'r', encoding="utf-8") as f:
data = json.load(f)
item = data
parents = [data]
for_dict(item, parents)