how to remove a back slash from a JSON file

Question:

I want to create a json file like this:

{"946705035":4,"946706692":4 ...}

I am taking a column that only contains Unix Timestamp and group them.

result = data['Last_Modified_Date_unixtimestamp_no_time'].value_counts()

In [21]: result.head()
Out[21]: 
1508284800    131
1508716800    106
1508371200    101
1508457600     99
1508630400     96
Name: Last_Modified_Date_unixtimestamp_no_time, dtype: int64

transform to a dict

result = result.to_dict()
result
'''
{1507161600: 1,
 1507852800: 1,
 1508198400: 64,
 1508284800: 131,
 ...
 1535155200: 1,
 1535241600: 1}
'''

import json
result = json.dumps(result)

with open('result.json', 'w') as fp:
    json.dump(result, fp, indent=4)

result
enter image description here
this is the data structure that I expected

{"946705035":4,"946706692":4}

Answers:

You’re dumping the JSON twice, which causes quotes to be escaped on the second dump. (After the first json.dumps the result is only a string, so you’re just dumping a string instead of a dict again)

import json
# result = json.dumps(result)

with open('result.json', 'w') as fp:
    json.dump(result, fp, indent=4)

Or remove the second dump:

import json
result = json.dumps(result)

with open('result.json', 'w') as fp:
    # json.dump(result, fp, indent=4)
    print(result, file=fp)
Answered By: iBug

The simplest way to solve the above problem is to play with json.dumps() and json.loads().

import json
result = json.dumps(result)

with open('result.json', 'w') as fp:
    json.loads(result, fp)
Answered By: Rushabh Sudame
data_json=df.to_json(orient='records')
parsed=json.loads(data_json)

with open('my_data.json', 'w') as f:
    json.dump(parsed, f, indent=4)
Answered By: clemiblac

First convert the dataframe to dict

response = df.to_dict(orient="records")

And then encode the response to json

json_compatible_data = jsonable_encoder(response)

This should work well.

Answered By: Aashish Chaubey
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.