0

I currently have a Python Dictionary that looks something like this:

OrderedDict([('2017-07-24', 149.7619), ('2017-07-25', 150.4019), ('2017-07-26', 151.1109), ...

that I am converting to JSON like so:

one_yr = json.dumps(priceDict)

Currently I am adding values to the dictionary from an SQL query by looping through it like so:

for i in query:
    date = i[0] 
    close = i[1]
    priceDict[date] = close

The problem is that this returns a JSON object, that i then have to convert to a JSON array.

I am wondering if I can just convert my Python Dictionary to a JSON array directly? Thanks.

1
  • 2
    But this is a dict. A dict maps to an object. If you don't want an object, why are you passing a dict? Commented Jul 25, 2018 at 19:12

3 Answers 3

3
json.dumps(list(priceDict.items()))

But why do you have an OrderedDict in first place? If you pass the same list you passed to OrderedDict to json.dumps it will generate your array:

json.dumps([('2017-07-24', 149.7619), ('2017-07-25', 150.4019),....])

No need for OrderedDict in this case

Sign up to request clarification or add additional context in comments.

2 Comments

TypeError: Object of type odict_items is not JSON serializable ? json.dumps(list(price_dict.items()))?
Thanks for the response, I should have mentioned I am using a Highcharts (a javascript charting library), that depends on the data being in an array. Currently the data looks like so: var one_yr = [["2017-07-24", 41.8175], ["2017-07-25", 41.9946], ... ["2018-01-01", 42.6143]} and isn't being plotted.
1

If you want to convert a Python Dictionary to JSON using the json.dumps() method.

`

import json 
from decimal import Decimal
d = {}
d["date"] = "2017-07-24"
d["quantity"] = "149.7619"
print json.dumps(d, ensure_ascii=False)

`

5 Comments

Unfortunately this seems to create a dict with only two values. IE: [('close', 149.7619), ('date', '2017-07-24')], the problem is I am looping through a series of values.
@ng150716 you can keep on adding the values byd["close"] = "149.7619,150.4019"
Sorry, I'm very new to serializing data and a bit rusty with Python over-all, how would that fit into for loop?
@ng150716their is no need of loop I guess d[""] = ([('2017-07-24', 149.7619), ('2017-07-25', 150.4019), ('2017-07-26', 151.1109,...)]) this might help you
Sorry, i don't think I explained clearly what i mean't, but I have to loop through an SQL query to add the values to the dict. I have updated my post to show what I mean.
0

I removed the OrderedDict but kept all the other data, I think I understand the request. See if this works for you:

import json

my_dict = ([('2017-07-24', 149.7619), ('2017-07-25', 150.4019), ('2017-07-26', 151.1109)])

print(json.dumps(my_dict, indent=4, sort_keys=True))

1 Comment

Unfortunately no, this still seems to create an object not an array (the data is still encapuslated in curly braces { ... } as opposed to brackets [ ... ]

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.