private void allDone() {
Log.i(TAG, "The choice has been made");
getActivity().finish(); //finish your app!.
//NavUtils.navigateUpFromSameTask(getActivity());
try { //Open browser!.
Uri uri = Uri.parse("googlechrome://navigate?url=");
Intent i = new Intent(Intent.ACTION_VIEW, uri);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
} catch (ActivityNotFoundException e) {
// Chrome is not installed
}
}
代码:
if story['epic']['id'] == epic['id']:
TypeError: 'NoneType' object is not subscriptable
我可能认为这一切都错了,但仍然试图学习json / dict迭代以及如何比较多个。
我正在尝试从匹配ID的故事中检索相同史诗ID的数据。我知道for epic in epics:
if epic['archived'] is False:
print(epic['short_name'], epic['summary'], epic['story_count'])
for story in stories:
if story['epic']['id'] == epic['id']:
print(story['summary'], story['cell']['label'])
包含story['epic']
和['id']
,但显然我无法将其与非故事数据进行比较?
注意:['local_id']
的值可能无效。
答案 0 :(得分:2)
大多数JSON库将其输入转换为嵌套的public class SumOfNumbers {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Number?");
int number = keyboard.nextInt();
System.out.println(recursion(number));
}
public static int recursion(int number)
{
for (int i=0;i>number;i++)
{
return recursion(i);
}
else {
return number ;
}
}
}
。但是,除非源非常友好,否则在处理JSON输入时,您几乎总是必须处理可能省略对象的事实。
处理此问题的最佳方法是使用dict
而不是直接订阅生成的dict.get()
,因为它允许您在缺少密钥时提供默认值。
因此,你可以做dict
代替
story['epic']['id']
这将返回故事的story_id = story.get('epic', {}).get('id', "")
值(如果存在)或空字符串。无论哪种方式,您都可以安全地将其与id
请注意,所有中间步骤都应返回空epic['id']
作为默认值 - 允许调用链继续而不会引发异常。
dict
如果你发现自己在足够的地方做这件事看起来很重复(你会:)你可以随时把它抽象成一个效用函数
mydict.get('k1',{}).get('k1.1',{}).get('k1.1.1`,{}).get('lastkey','default')
然后这样称呼它
def getnested(thedict,intermediate_keys,final_key,dflt):
dd = thedict
for key in intermediate_keys:
dd = dd.get(key,{})
return dd.get(final_key,dflt)
答案 1 :(得分:-1)
这只是意味着,
story['epic']
是无对象或
epic['id']
是无对象。
然后,错误消息现在有意义,您应该能够在代码逻辑中找出原因。