json-repair 0.25.0__py3-none-any.whl → 0.25.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- json_repair/json_repair.py +32 -34
- {json_repair-0.25.0.dist-info → json_repair-0.25.1.dist-info}/METADATA +1 -1
- json_repair-0.25.1.dist-info/RECORD +7 -0
- {json_repair-0.25.0.dist-info → json_repair-0.25.1.dist-info}/WHEEL +1 -1
- json_repair-0.25.0.dist-info/RECORD +0 -7
- {json_repair-0.25.0.dist-info → json_repair-0.25.1.dist-info}/LICENSE +0 -0
- {json_repair-0.25.0.dist-info → json_repair-0.25.1.dist-info}/top_level.txt +0 -0
json_repair/json_repair.py
CHANGED
@@ -119,40 +119,38 @@ class JSONParser:
|
|
119
119
|
def parse_json(
|
120
120
|
self,
|
121
121
|
) -> JSONReturnType:
|
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
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
self.index += 1
|
155
|
-
return self.parse_json()
|
122
|
+
while True:
|
123
|
+
char = self.get_char_at()
|
124
|
+
# This parser will ignore any basic element (string or number) that is not inside an array or object
|
125
|
+
is_in_context = len(self.context) > 0
|
126
|
+
# False means that we are at the end of the string provided
|
127
|
+
if char is False:
|
128
|
+
return ""
|
129
|
+
# <object> starts with '{'
|
130
|
+
elif char == "{":
|
131
|
+
self.index += 1
|
132
|
+
return self.parse_object()
|
133
|
+
# <array> starts with '['
|
134
|
+
elif char == "[":
|
135
|
+
self.index += 1
|
136
|
+
return self.parse_array()
|
137
|
+
# there can be an edge case in which a key is empty and at the end of an object
|
138
|
+
# like "key": }. We return an empty string here to close the object properly
|
139
|
+
elif char == "}":
|
140
|
+
self.log(
|
141
|
+
"At the end of an object we found a key with missing value, skipping",
|
142
|
+
"info",
|
143
|
+
)
|
144
|
+
return ""
|
145
|
+
# <string> starts with a quote
|
146
|
+
elif is_in_context and (char in ['"', "'", "“"] or char.isalpha()):
|
147
|
+
return self.parse_string()
|
148
|
+
# <number> starts with [0-9] or minus
|
149
|
+
elif is_in_context and (char.isdigit() or char == "-" or char == "."):
|
150
|
+
return self.parse_number()
|
151
|
+
# If everything else fails, we just ignore and move on
|
152
|
+
else:
|
153
|
+
self.index += 1
|
156
154
|
|
157
155
|
def parse_object(self) -> Dict[str, Any]:
|
158
156
|
# <object> ::= '{' [ <member> *(', ' <member>) ] '}' ; A sequence of 'members'
|
@@ -0,0 +1,7 @@
|
|
1
|
+
json_repair/__init__.py,sha256=IIzSm1DsCRrr8seF3UeMZXwxcq-tE3j-8d1WBxvEJvE,178
|
2
|
+
json_repair/json_repair.py,sha256=PbfthTey1p04_9Q3QRGm8We1ueFVYwO5kQUShpfR10Y,30961
|
3
|
+
json_repair-0.25.1.dist-info/LICENSE,sha256=wrjQo8MhNrNCicXtMe3MHmS-fx8AmQk1ue8AQwiiFV8,1076
|
4
|
+
json_repair-0.25.1.dist-info/METADATA,sha256=QjbXE09AIfd70scALY8DPIBxg0TYTBlKg3KuJ7MAMRw,7596
|
5
|
+
json_repair-0.25.1.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
|
6
|
+
json_repair-0.25.1.dist-info/top_level.txt,sha256=7-VZwZN2CgB_n0NlSLk-rEUFh8ug21lESbsblOYuZqw,12
|
7
|
+
json_repair-0.25.1.dist-info/RECORD,,
|
@@ -1,7 +0,0 @@
|
|
1
|
-
json_repair/__init__.py,sha256=IIzSm1DsCRrr8seF3UeMZXwxcq-tE3j-8d1WBxvEJvE,178
|
2
|
-
json_repair/json_repair.py,sha256=RyxtqoMopJvEwVestHDP_D6FnVkSt3bmmr1liYOQwHE,30976
|
3
|
-
json_repair-0.25.0.dist-info/LICENSE,sha256=wrjQo8MhNrNCicXtMe3MHmS-fx8AmQk1ue8AQwiiFV8,1076
|
4
|
-
json_repair-0.25.0.dist-info/METADATA,sha256=K6rBtBRbVuRQICWknDvDm3OnNq_bGrwT7K6U99PPYmg,7596
|
5
|
-
json_repair-0.25.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
6
|
-
json_repair-0.25.0.dist-info/top_level.txt,sha256=7-VZwZN2CgB_n0NlSLk-rEUFh8ug21lESbsblOYuZqw,12
|
7
|
-
json_repair-0.25.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|