Hello there,

To whom it may concern,

I am having difficulty interacting with JSON. The example below if a
typical input and output:


*import json*
*array = json.load( { "name": "Joe", "address": "111 Street" } )*

*Traceback (most recent call last): File "<stdin>" , line 1, in <module>
File "C:\Python27\lib\json\__init__.py" , line 286, in load return
loads(fp.read(), AttributeError: 'dict' object has no attribute 'read' >>>*


I would appreciate assitance understanding why this doesn't work, and how I can get up-and-running with inputing JSON code into Python.

Which version of Python? The following works with Python 3.x and Python 2.7, though:

  arr = json.loads('{ "name": "Joe", "address": "111 Street" }')
  arr.get('address')

Here are some notes about why:

  # -- below is a Python dictionary, it is not actually JSON

  >>> { "name": "Joe", "address": "111 Street" }
  {'name': 'Joe', 'address': '111 Street'}


  # -- next is that Python dictionary turned into JSON (single quotes)

  >>> '{ "name": "Joe", "address": "111 Street" }'
  '{ "name": "Joe", "address": "111 Street" }'


  # -- now you have a JavaScript Object Notation string, which you
  #    can manipulate; let's use the json.loads() call

  >>> arr = json.loads('{ "name": "Joe", "address": "111 Street" }')


  # -- You will notice I used a variable called 'arr' instead of
  #    array, because there is a module called array, and I may
  #    (one day) want to use it.

  >>> arr
  {'name': 'Joe', 'address': '111 Street'}


  # -- OK, but I'm lazy, I don't want to have to type all of my
  #    JSON into strings.  OK.  So, don't.  Have the JSON module
  #    convert your object (a dictionary) into a string for you.

  >>> json.dumps(arr)
  '{"name": "Joe", "address": "111 Street"}'

So, have some fun with the json.dumps() and json.loads() calls. Then, you can move on to json.dump() and json.load() to put your data into files.

-Martin

--
Martin A. Brown
http://linux-ip.net/
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to