rfc 4627 , который определяет application/json
, говорит:
An object is an unordered collection of zero or more name/value pairs
И:
The names within an object SHOULD be unique.
Это означает, что AlchemyAPI не должен возвращать кратное "subType"
имена внутри одного и того же объекта и утверждают, что это JSON.
Вы можете попробовать запросить то же самое в формате XML (outputMode=xml
), чтобы избежать неоднозначности в результатах или преобразовать значения дубликатов ключей в списки:
import simplejson as json
from collections import defaultdict
def multidict(ordered_pairs):
"""Convert duplicate keys values to lists."""
# read all values into lists
d = defaultdict(list)
for k, v in ordered_pairs:
d[k].append(v)
# unpack lists that have only 1 item
for k, v in d.items():
if len(v) == 1:
d[k] = v[0]
return dict(d)
print json.JSONDecoder(object_pairs_hook=multidict).decode(text)
Пример
text = """{
"type": "Person",
"subType": "Athlete",
"subType": "AwardWinner"
}"""
Выход
{u'subType': [u'Athlete', u'AwardWinner'], u'type': u'Person'}