Skip to content

Commit e3df081

Browse files
committed
rewriting .write and ._write
1 parent f2cbc72 commit e3df081

File tree

1 file changed

+40
-21
lines changed

1 file changed

+40
-21
lines changed

pandas/io/json/json.py

+40-21
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def to_json(path_or_buf, obj, orient=None, date_format='epoch',
5555
obj, orient=orient, date_format=date_format,
5656
double_precision=double_precision, ensure_ascii=force_ascii,
5757
date_unit=date_unit, default_handler=default_handler,
58-
index=index)._write()
58+
index=index).write()
5959

6060
if lines:
6161
s = _convert_to_line_delimits(s)
@@ -95,15 +95,21 @@ def __init__(self, obj, orient, date_format, double_precision,
9595
def _format_axes(self):
9696
raise AbstractMethodError(self)
9797

98-
def _write(self):
98+
def write(self):
99+
return self._write(self.obj, self.orient, self.double_precision,
100+
self.ensure_ascii, self.date_unit,
101+
self.date_format == 'iso', self.default_handler)
102+
103+
def _write(self, obj, orient, double_precision, ensure_ascii,
104+
date_unit, iso_dates, default_handler):
99105
return dumps(
100-
self.obj,
101-
orient=self.orient,
102-
double_precision=self.double_precision,
103-
ensure_ascii=self.ensure_ascii,
104-
date_unit=self.date_unit,
105-
iso_dates=self.date_format == 'iso',
106-
default_handler=self.default_handler
106+
obj,
107+
orient=orient,
108+
double_precision=double_precision,
109+
ensure_ascii=ensure_ascii,
110+
date_unit=date_unit,
111+
iso_dates=iso_dates,
112+
default_handler=default_handler
107113
)
108114

109115

@@ -115,10 +121,14 @@ def _format_axes(self):
115121
raise ValueError("Series index must be unique for orient="
116122
"'{orient}'".format(orient=self.orient))
117123

118-
def _write(self):
119-
if not self.index and self.orient == 'split':
120-
self.obj = {"name": self.obj.name, "data": self.obj.values}
121-
return super(SeriesWriter, self)._write()
124+
def _write(self, obj, orient, double_precision, ensure_ascii,
125+
date_unit, iso_dates, default_handler):
126+
if not self.index and orient == 'split':
127+
obj = {"name": obj.name, "data": obj.values}
128+
return super(SeriesWriter, self)._write(obj, orient,
129+
double_precision,
130+
ensure_ascii, date_unit,
131+
iso_dates, default_handler)
122132

123133

124134
class FrameWriter(Writer):
@@ -135,11 +145,15 @@ def _format_axes(self):
135145
raise ValueError("DataFrame columns must be unique for orient="
136146
"'{orient}'.".format(orient=self.orient))
137147

138-
def _write(self):
139-
if not self.index and self.orient == 'split':
140-
self.obj = self.obj.to_dict(orient='split')
141-
del self.obj["index"]
142-
return super(FrameWriter, self)._write()
148+
def _write(self, obj, orient, double_precision, ensure_ascii,
149+
date_unit, iso_dates, default_handler):
150+
if not self.index and orient == 'split':
151+
obj = obj.to_dict(orient='split')
152+
del obj["index"]
153+
return super(FrameWriter, self)._write(obj, orient,
154+
double_precision,
155+
ensure_ascii, date_unit,
156+
iso_dates, default_handler)
143157

144158

145159
class JSONTableWriter(FrameWriter):
@@ -191,10 +205,15 @@ def __init__(self, obj, orient, date_format, double_precision,
191205
self.orient = 'records'
192206
self.index = index
193207

194-
def _write(self):
208+
def _write(self, obj, orient, double_precision, ensure_ascii,
209+
date_unit, iso_dates, default_handler):
195210
if not self.index:
196-
self.obj = self.obj.drop('index', axis=1)
197-
data = super(JSONTableWriter, self)._write()
211+
obj = obj.drop('index', axis=1)
212+
data = super(JSONTableWriter, self)._write(obj, orient,
213+
double_precision,
214+
ensure_ascii, date_unit,
215+
iso_dates,
216+
default_handler)
198217
serialized = '{{"schema": {schema}, "data": {data}}}'.format(
199218
schema=dumps(self.schema), data=data)
200219
return serialized

0 commit comments

Comments
 (0)