33
33
def to_json (path_or_buf , obj , orient = None , date_format = 'epoch' ,
34
34
double_precision = 10 , force_ascii = True , date_unit = 'ms' ,
35
35
default_handler = None , lines = False , compression = 'infer' ,
36
- index = True ):
36
+ index = True , indent = 0 ):
37
37
38
38
if not index and orient not in ['split' , 'table' ]:
39
39
raise ValueError ("'index=False' is only valid when 'orient' is "
@@ -59,7 +59,7 @@ def to_json(path_or_buf, obj, orient=None, date_format='epoch',
59
59
obj , orient = orient , date_format = date_format ,
60
60
double_precision = double_precision , ensure_ascii = force_ascii ,
61
61
date_unit = date_unit , default_handler = default_handler ,
62
- index = index ).write ()
62
+ index = index , indent = indent ).write ()
63
63
64
64
if lines :
65
65
s = _convert_to_line_delimits (s )
@@ -78,7 +78,8 @@ def to_json(path_or_buf, obj, orient=None, date_format='epoch',
78
78
79
79
class Writer :
80
80
def __init__ (self , obj , orient , date_format , double_precision ,
81
- ensure_ascii , date_unit , index , default_handler = None ):
81
+ ensure_ascii , date_unit , index , default_handler = None ,
82
+ indent = 0 ):
82
83
self .obj = obj
83
84
84
85
if orient is None :
@@ -91,6 +92,7 @@ def __init__(self, obj, orient, date_format, double_precision,
91
92
self .date_unit = date_unit
92
93
self .default_handler = default_handler
93
94
self .index = index
95
+ self .indent = indent
94
96
95
97
self .is_copy = None
96
98
self ._format_axes ()
@@ -101,18 +103,20 @@ def _format_axes(self):
101
103
def write (self ):
102
104
return self ._write (self .obj , self .orient , self .double_precision ,
103
105
self .ensure_ascii , self .date_unit ,
104
- self .date_format == 'iso' , self .default_handler )
106
+ self .date_format == 'iso' , self .default_handler ,
107
+ self .indent )
105
108
106
109
def _write (self , obj , orient , double_precision , ensure_ascii ,
107
- date_unit , iso_dates , default_handler ):
110
+ date_unit , iso_dates , default_handler , indent ):
108
111
return dumps (
109
112
obj ,
110
113
orient = orient ,
111
114
double_precision = double_precision ,
112
115
ensure_ascii = ensure_ascii ,
113
116
date_unit = date_unit ,
114
117
iso_dates = iso_dates ,
115
- default_handler = default_handler
118
+ default_handler = default_handler ,
119
+ indent = indent
116
120
)
117
121
118
122
@@ -125,11 +129,11 @@ def _format_axes(self):
125
129
"'{orient}'" .format (orient = self .orient ))
126
130
127
131
def _write (self , obj , orient , double_precision , ensure_ascii ,
128
- date_unit , iso_dates , default_handler ):
132
+ date_unit , iso_dates , default_handler , indent ):
129
133
if not self .index and orient == 'split' :
130
134
obj = {"name" : obj .name , "data" : obj .values }
131
135
return super ()._write (obj , orient , double_precision , ensure_ascii ,
132
- date_unit , iso_dates , default_handler )
136
+ date_unit , iso_dates , default_handler , indent )
133
137
134
138
135
139
class FrameWriter (Writer ):
@@ -149,19 +153,20 @@ def _format_axes(self):
149
153
"'{orient}'." .format (orient = self .orient ))
150
154
151
155
def _write (self , obj , orient , double_precision , ensure_ascii ,
152
- date_unit , iso_dates , default_handler ):
156
+ date_unit , iso_dates , default_handler , indent ):
153
157
if not self .index and orient == 'split' :
154
158
obj = obj .to_dict (orient = 'split' )
155
159
del obj ["index" ]
156
160
return super ()._write (obj , orient , double_precision , ensure_ascii ,
157
- date_unit , iso_dates , default_handler )
161
+ date_unit , iso_dates , default_handler , indent )
158
162
159
163
160
164
class JSONTableWriter (FrameWriter ):
161
165
_default_orient = 'records'
162
166
163
167
def __init__ (self , obj , orient , date_format , double_precision ,
164
- ensure_ascii , date_unit , index , default_handler = None ):
168
+ ensure_ascii , date_unit , index , default_handler = None ,
169
+ indent = 0 ):
165
170
"""
166
171
Adds a `schema` attribute with the Table Schema, resets
167
172
the index (can't do in caller, because the schema inference needs
@@ -170,7 +175,7 @@ def __init__(self, obj, orient, date_format, double_precision,
170
175
"""
171
176
super ().__init__ (obj , orient , date_format , double_precision ,
172
177
ensure_ascii , date_unit , index ,
173
- default_handler = default_handler )
178
+ default_handler = default_handler , indent = indent )
174
179
175
180
if date_format != 'iso' :
176
181
msg = ("Trying to write with `orient='table'` and "
@@ -211,9 +216,9 @@ def __init__(self, obj, orient, date_format, double_precision,
211
216
self .index = index
212
217
213
218
def _write (self , obj , orient , double_precision , ensure_ascii ,
214
- date_unit , iso_dates , default_handler ):
219
+ date_unit , iso_dates , default_handler , indent ):
215
220
data = super ()._write (obj , orient , double_precision , ensure_ascii ,
216
- date_unit , iso_dates , default_handler )
221
+ date_unit , iso_dates , default_handler , indent )
217
222
serialized = '{{"schema": {schema}, "data": {data}}}' .format (
218
223
schema = dumps (self .schema ), data = data )
219
224
return serialized
0 commit comments