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.

asked Jul 25, 2018 at 19:10
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

answered Jul 25, 2018 at 19:13
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)

`

answered Jul 25, 2018 at 20:24

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))
answered Jul 25, 2018 at 19:19

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

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

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.