質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

331閲覧

いfpython jsonファイルの操作

noz_awsinf_sp

総合スコア62

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/08/19 07:33

編集2020/08/19 07:49

以下のように、jsonファイルを読み込んで
for文でKey Valueを取得する中で
「特定のKeyがあれば、XXする」
という処理をしたいですがTypeError: string indices must be integers
というエラーになってしまいます。
どのように修正すればよいでしょうか?

※if文としては、「project_id」が「XX」なら「ZZ」したいという処理を考えています

conf.json

{ "issue": [ { "project_id": 1, "subject": "APIテスト", "tracker_id": 5, "status_id": 1 }, { "project_id": 2, "subject": "APIテスト2", "tracker_id": 5, "status_id": 1 }, { "project_id": 3, "subject": "APIテスト3", "tracker_id": 5, "status_id": 1 } ] }

test.py

import json with open("./conf.json", "r") as f: a = json.load(f) print(a) for i in a['issue']: if i["project_id"] == 1: print("test")

エラー内容

Traceback (most recent call last): File "test.py", line 9, in <module> if i["project_id"] == 1: TypeError: string indices must be integers

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

コードのfor文の部分に問題はありません。質問者さんの意図通りに動くと思います。

plain

1>>> s = """{ 2... "issue": [ 3... { 4... "project_id": 1, 5... "subject": "APIテスト", 6... "tracker_id": 5, 7... "status_id": 1 8... }, 9... { 10... "project_id": 2, 11... "subject": "APIテスト2", 12... "tracker_id": 5, 13... "status_id": 1 14... }, 15... { 16... "project_id": 3, 17... "subject": "APIテスト3", 18... "tracker_id": 5, 19... "status_id": 1 20... } 21... ] 22... }""" 23 24>>> import json 25 26>>> a = json.loads(s) 27 28>>> for i in a['issue']: 29... if i["project_id"] == 1: 30... print("test") 31test

確認するべきは、読み込みしているconf.jsonと、質問に貼ったJSONが別のものである可能性です。

投稿2020/08/19 07:57

編集2020/08/19 07:58
quickquip

総合スコア11059

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

提示コードで問題ありません。

conf.json修正前の回答

if文としては、「project_id」が「XX」なら「ZZ」したいという処理を考えています

以下でできます。

Python

1if a['issue']['project_id'] == XX: 2 print(ZZ)

投稿2020/08/19 07:42

編集2020/08/19 08:04
can110

総合スコア38278

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

皆様ありがとうございました。
よくよく見直したら問題なく動作しましたのでクローズいたします。

投稿2020/08/19 08:09

noz_awsinf_sp

総合スコア62

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問