我在应用程序引擎中使用Alchemy API,所以在使用simplejson库来解析响应。问题是响应中包含具有sme名称的条目
{
"status": "OK",
"usage": "By accessing AlchemyAPI or using information generated by AlchemyAPI, you are agreeing to be bound by the AlchemyAPI Terms of Use: http://www.alchemyapi.com/company/terms.html",
"url": "",
"language": "english",
"entities": [
{
"type": "Person",
"relevance": "0.33",
"count": "1",
"text": "Michael Jordan",
"disambiguated": {
"name": "Michael Jordan",
"subType": "Athlete",
"subType": "AwardWinner",
"subType": "BasketballPlayer",
"subType": "HallOfFameInductee",
"subType": "OlympicAthlete",
"subType": "SportsLeagueAwardWinner",
"subType": "FilmActor",
"subType": "TVActor",
"dbpedia": "http://dbpedia.org/resource/Michael_Jordan",
"freebase": "http://rdf.freebase.com/ns/guid.9202a8c04000641f8000000000029161",
"umbel": "http://umbel.org/umbel/ne/wikipedia/Michael_Jordan",
"opencyc": "http://sw.opencyc.org/concept/Mx4rvViVq5wpEbGdrcN5Y29ycA",
"yago": "http://mpii.de/yago/resource/Michael_Jordan"
}
}
]
}
因此,问题在于重复了“ subType”,因此加载返回的指令只是“ TVActor”,而不是列表。无论如何要解决这个问题?
定义的RFC
4627application/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'}
问题内容: 我有Django版本1.7和Python版本2.7.5-我使用pip install simplejson和apt-get install python-simplejson命令来解决此问题,但仍然显示此异常。Django和Python之间是否存在任何兼容性问题,或者解决该异常的解决方案是什么: 问题答案: 您的代码与您使用的Django版本不兼容。 Django以前附带,但在Djan
这是 Python 解析 JSON 的程序库。它具有简单、快速、完整、正确和易于扩展的特点,支持Python 2.5+和Python 3.3+。为了加速处理速度,它包括一个可选的C扩展。 示例 >>> import simplejson as json>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])'["foo", {"bar": ["
我有一个类,比如说,它有两个函数,它们的名称相同,参数数量相同,但参数类型不同。现在,我假设模拟它们的返回值应该像使用两个语句和适当的匹配器一样,但是当我尝试得到以下错误时: 组织。莫基托。例外。滥用。InvalidUseOfMatcherException:此处检测到错误放置的参数匹配器: - 以下是我尝试的一个例子: 虽然我不是Mockito的巫师,但我已经使用它一段时间了,从来没有遇到过这个
我有一个PDF文件,其中包含一个表单,其中的字段具有相同的字段名。这是为了共享文档中的数据而做的。例如,我有合同,此文档的每一页都必须有公司名称,我将公司名称写在一个表单字段中,并将其复制到当前文档的所有页面,但是当我尝试使用库阅读此文档时,我没有得到此数据,因为只创建一个字段名为的字段,而另一个字段名为clean。 如何使用库读取具有相同字段名称的字段?
本文向大家介绍Python中模块与包有相同名字的处理方法,包括了Python中模块与包有相同名字的处理方法的使用技巧和注意事项,需要的朋友参考一下 前言 在编程开发中,个人觉得,只要按照规范去做,很少会出问题。刚开始学习一门技术时,的确会遇到很多的坑。踩的坑多了,这是好事,会学到更多东西,也会越来越觉得按照规范做的重要性,规范的制定就是用来规避问题的。有时候确实应该听听有经验人的建议,不要一意孤行