Vishal Sharma
Vishal Sharma

Reputation: 3

JSON serialization Error in Python 3.2

I am using JSON library and trying to import a page feed to an CSV file. Tried many a ways to get the result however every time code execute it Gives JSON not serialzable. No Facebook use auth code which I have and used it so connection string will change however if you use a page which has public privacy you will still be able to get the result from below code.

following is the code

import urllib3
import json
import requests
#from pprint import pprint
import csv
from urllib.request import urlopen

page_id = "abcd" # username or id
api_endpoint = "https://graph.facebook.com"
fb_graph_url = api_endpoint+"/"+page_id
try:
#api_request = urllib3.Requests(fb_graph_url)
    #http = urllib3.PoolManager()
    #api_response = http.request('GET', fb_graph_url)
    api_response = requests.get(fb_graph_url)
    try:
        #print (list.sort(json.loads(api_response.read())))
        obj = open('data', 'w')
        #    write(json_dat)
        f = api_response.content

        obj.write(json.dumps(f))
        obj.close()
    except Exception as ee:
        print(ee)
except Exception as e:
    print( e)

Tried many approach but not successful. hope some one can help

Upvotes: 0

Views: 241

Answers (2)

Tuan Anh Hoang-Vu
Tuan Anh Hoang-Vu

Reputation: 1995

api_response.content is the text content of the API, not a Python object so you won't be able to dump it.

Try either:

f = api_response.content
obj.write(f)

Or

f = api_response.json()
obj.write(json.dumps(f))

Upvotes: 1

user1907906
user1907906

Reputation:

requests.get(fb_graph_url).content

is probably a string. Using json.dumps on it won't work. This function expects a list or a dictionary as the argument.

If the request already returns JSON, just write it to the file.

Upvotes: 0

Related Questions