- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
因为我刚开始使用 python,所以我认为我还没有很好地掌握解析 json 响应的概念,并且当我尝试只打印出 json 文件的某些部分时,我一直遇到同样的问题.在下面的代码中,我使用 foursquare checkins API 端点返回我的 checkin 历史记录(为简洁起见省略了身份验证过程):
from rauth import OAuth2Service
import json
import pprint
fs_checkins = session.get(endpoint, params = query_params)
fs_checkin_data = json.loads(fs_checkins.content)
pprint.pprint(fs_checkin_data)
这会产生如下所示的 json 响应:
{u'response': {u'checkins': {u'count': 74,
u'items': [{u'photos': {u'count': 0,
u'items': []},
u'posts': {u'count': 0,
u'textCount': 0},
u'source': {u'name': u'foursquare for iPhone',
u'url': u'https://foursquare.com/download/#/iphone'},
u'timeZoneOffset': -240,
u'type': u'checkin',
u'venue': {u'beenHere': {u'count': 1,
u'marked': False},
u'canonicalUrl': u'https://foursquare.com/v/nitehawk-cinema/4da491f6593f8eec9a257e35',
u'categories': [{u'icon': {u'prefix': u'https://foursquare.com/img/categories_v2/arts_entertainment/movietheater_',
u'suffix': u'.png'},
u'id': u'4bf58dd8d48988d17f941735',
u'name': u'Movie Theater',
u'pluralName': u'Movie Theaters',
u'primary': True,
u'shortName': u'Movie Theater'}],
u'contact': {u'formattedPhone': u'(718) 384-3980',
u'phone': u'7183843980'},
u'id': u'4da491f6593f8eec9a257e35',
u'like': False,
u'likes': {u'count': 114,
u'groups': [{u'count': 114,
u'items': [],
u'type': u'others'}],
u'summary': u'114 likes'},
u'location': {u'address': u'136 Metropolitan Ave.',
u'cc': u'US',
u'city': u'Brooklyn',
u'country': u'United States',
u'crossStreet': u'btwn Berry St. & Wythe Ave.',
u'lat': 40.716219932353624,
u'lng': -73.96228637176877,
u'postalCode': u'11211',
u'state': u'NY'},
u'name': u'Nitehawk Cinema',
u'stats': {u'checkinsCount': 11566,
u'tipCount': 99,
u'usersCount': 6003},
u'url': u'http://www.nitehawkcinema.com',
u'venuePage': {u'id': u'49722288'},
u'verified': True}}]}}}
我只想解析出嵌套在 'venue'
下的 'canonicalUrl'
和 'name'
并理解其结构所以:
response
checkins
items
venue
canonicalUrl
name
我已经尝试通过 fs_checkin_data['response']['checkins']
循环将 'items'
blob 附加到一个空列表中:
items = []
for item in fs_checkin_data['response']['checkins']:
info = {}
info['items'] = item['items']
items.append(info)
然后我想我可以通过 that 空列表进行循环,将 'venue'
blob 附加到另一个空列表中,最后只能打印出'canonicalUrl'
和 'name'
(对于我即兴创作的丑陋的拼凑逻辑表示歉意,因为我不知道还有其他方法可以达到相同的结果)。
然而,上面的代码导致了这个错误:
info['items'] = item['items']
TypeError: string indices must be integers
什么时候我不明白了
for item in fs_checkin_data['response']['checkins']:
pprint.pprint(item)
json 文件的那部分没有问题。
我知道必须有更好的方法来做到这一点,但我似乎无法找到一个简单、有效的解决方案,因此将不胜感激任何帮助。谢谢。
最佳答案
您需要遍历 items
:
for item in fs_checkin_data['response']['checkins']['items']:
venue = item['venue']
print venue['canonicalUrl'], venue['name']
checkins
本身仍然是一个只有两个键的字典,items
和 count
。遍历 checkins
字典会迭代键,因此在您的代码中 item
设置为 'count'
,然后是 'items'
(反之亦然)。另一方面,items
是一个字典列表,因此遍历该列表可以访问每个单独的项目。
关于python - 使用 python (foursquare API) 解析 json 文件中的较低级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15821165/
Android 项目中最低(最低 sdk)和最高(目标 sdk)级别是否有任何影响。这些东西是否会影响项目的可靠性和效率。 最佳答案 没有影响,如果您以 SDK 级别 8 为目标,那么您的应用将以 9
我将现有的 android 项目升级到 API 级别 31。我使用 Java 作为语言。我改变了 build.gradle compileSdkVersion 31 defaultConfig {
我正在使用 ionic 3 创建一个 android 应用程序,当我尝试上传到 playstore 时,我收到一个错误,提示我的应用程序以 api 25 为目标,当我检查我的 project.prop
我刚刚尝试将应用程序的目标和编译 API 级别更新为 29 (Android 10),并注意到我无法再编译,因为 LocationManager.addNmeaListener 只接受 OnNmeaM
我的代码没有在 Kitkat 上显示工具栏。 这是我的两个 Android 版本的屏幕截图。 Kitkat 版本: Lollipop 版: 这背后的原因可能是什么。 list 文件
我正在构建面向 API 级别 8 的 AccessabilityService,但我想使用 API 级别 18 中引入的功能 (getViewIdResourceName())。这应该可以通过使用 A
当我想在我的电脑上创建一个 android 虚拟机时,有两个选项可以选择目标设备。它们都用于相同的 API 级别。那么我应该选择哪一个呢?它们之间有什么区别? 最佳答案 一个是基本的 Android,
当我选择 tagret 作为 Android 4.2.2(API 级别 17)时,模拟器需要很长时间来加载和启动。 所以我研究它并通过使用 找到了解决方案Intel Atom(x86) 而不是 ARM
我有一个使用 Android Studio 创建的 Android 项目。我在项目中添加了一些第三方依赖项,但是当我尝试在 Android Studio 中编译时,我遇到了以下错误: Error:Ex
如上所述,如何使用 API 8 获取移动设备网络接口(interface)地址? 最佳答案 NetworkInterface.getInetAddresses() 在 API8 中可用。 关于andr
我想显示 Snackbar并使用图像而不是文本进行操作。 我使用以下代码: val imageSpan = ImageSpan(this, R.drawable.star) val b
我有一个用 python 编写的简单命令行程序。程序使用按以下方式配置的日志记录模块将日志记录到屏幕: logging.basicConfig(level=logging.INFO, format='
使用下面的代码,实现游戏状态以控制关卡的最简单和最简单的方法是什么?如果我想从标题画面开始,然后加载一个关卡,并在完成后进入下一个关卡?如果有人能解释处理这个问题的最简单方法,那就太好了! impor
我想创建一个可以找到嵌套树结构深度的属性。下面的静态通过递归找出深度/级别。但是是否可以将此函数作为同一个类中的属性而不是静态方法? public static int GetDepth(MenuGr
var myArray = [{ title: "Title 1", children: [{ title: "Title 1.1", children: [{
通过下面的代码,实现游戏状态来控制关卡的最简单、最容易的方法是什么?如果我想从标题屏幕开始,然后加载一个关卡,并在完成后进入下一个关卡?如果有人可以解释处理这个问题的最简单方法,那就太好了! impo
我有一个树结构,其中每个节点基本上可以有无限个子节点,它正在为博客的评论建模。 根据特定评论的 ID,我试图找出该评论在树中的深度/级别。 我正在关注 this guide that explains
考虑任何给定的唯一整数的数组,例如[1,3,2,4,6,5] 如何确定“排序度”的级别,范围从 0.0 到 1.0 ? 最佳答案 一种方法是评估必须移动以使其排序的项目数量,然后将其除以项目总数。 作
我如何定义一个模板类,它提供一个整数常量,表示作为输入模板参数提供的(指针)类型的“深度”?例如,如果类名为 Depth,则以下内容为真: Depth::value == 3 Depth::value
我的场景是:文件接收器应该包含所有内容。另一个接收器应包含信息消息,但需要注意的是 Microsoft.* 消息很烦人,因此这些消息应仅限于警告。两个sink怎么单独配置?我尝试的第一件事是: str
我是一名优秀的程序员,十分优秀!