2017-11-02 7 views
-1

私はここに、SQLテーブルから来ているJSON文字列を解析しようとしているが、解析時に、それはラインでエラーTypeError: string indices must be integersを与えているが、ここでresult = json_normalize(json_st,'results')Pythonのエラー:

がある:「例外TypeError文字列インデックスは整数でなければなりません」コードスニペット

from pandas.io.json import json_normalize 
import pyodbc 
cnxn = pyodbc.connect('connection string') 
cursor = cnxn.cursor() 

cursor.execute("select TOP 1 GEOCODE_ID, JSON from GEOCODE_TBL where GEOCODE_ID = 20") 
ID=[] 
JSON=[] 

for row in cursor.fetchall(): 
     ID.append(row[0]) 
     JSON.append(row[1]) 


json_st1 = json.dumps(JSON) 
json_st=json.loads(json_st1) 

result = json_normalize(json_st,'results') 

これに関する任意の提案が役に立ちます。

ありがとうございます。

Domnick

+0

にする必要があるが、[1] '行[0 ']と'行を印刷しよう '、彼らが何であるかを参照してください。列挙を使用してインデックスnoを使用することができます。 –

+0

@AyodhyankitPaul row [0]は私にIDとstr型(行[1])であるjson文字列[1]を与えます Out [119]:str' – Domnick

答えて

1

関数のシグネチャを見ると、変数と一部のオプションのパラメータを持つデータが必要です。

pandas.io.json.json_normalize(data, record_path=None, meta=None, 
meta_prefix=None, record_prefix=None, errors='raise', sep='.') 

data : dict or list of dicts。したがって、文字列として渡すことはできません。また、なぜ文字列'results'も渡していますか?

あなたのデータ変数は(PythonでJSONである)辞書、またはdictsのリスト