2016-12-01 10 views
0

私はこのようなデータをJSONファイルがあります。jsonファイルからデータを読み取る方法は?

{ 
    "id": 1008, 
    "description": "Cheese, caraway", 
    "tags": [ ], 
    "manufacturer": "", 
    "group": "Dairy and Egg Products", 
    "portions": [ 
     { 
      "amount": 1, 
      "unit": "oz", 
      "grams": 28.35 
     } 
    ], 
    "nutrients": [ 
     { 
      "value": 25.18, 
      "units": "g", 
      "description": "Protein", 
      "group": "Composition" 
     }, 
     { 
      "value": 29.2, 
      "units": "g", 
      "description": "Total lipid (fat)", 
      "group": "Composition" 
     }, 
     { 
      "value": 3.06, 
      "units": "g", 
      "description": "Carbohydrate, by difference", 
      "group": "Composition" 
     }, 
     { 
      "value": 3.28, 
      "units": "g", 
      "description": "Ash", 
      "group": "Other" 
     } 
    ] 
} 

をし、私はそれから読み取るしようとする次のコードを使用し、

import json 
path = 'C:\\Users\\IBM_ADMIN\\Desktop\\ml-1m\\food_nutrients_database - 副本.json' 
data = open(path).read() 
records = json.loads(data) 

が、次のエラーを取得する:

records = json.loads(data) 
ValueError: Expecting value: line 1 column 1 (char 0) 

ここに問題がありますか?と私は "锘縶"で始まる "データ"からの結果のリターンに気づいた、これは可能な理由ですか?もしそうなら、それを解決する方法は?

+0

と混同しないように、あなたのJSON形式が誤っていることを確認したJSONオブジェクトに文字列をロードすることです。 –

答えて

2

しないでください。ファイル全体からデータを渡すだけです。

あなたはファイルオブジェクトそのものを取る load()を使用してそれをさらに短くすることができます
data = open(path).read() 
records = json.loads(data) 

records = json.load(open(path)) 
1

です、あなたは、JSONファイルから各行を読み取り、JSONにそれを渡している何が間違っています.load()、あなたがする必要があるのは、ファイルを一度開き、内容を読み込んでからjson.loadメソッドに渡すだけです。

file_data = open(path).read() 
json_data = json.loads(file_data) 

Also the posted JSON format is incorrect, so make sure your JSON format is correct.

+0

私はjson形式を再フォーマットした後も、データを(データ= open(path).read())から印刷しようとすると、同じエラーが発生します。考えられる理由は?それを解決する方法は? – tonyibm

0

あなたは、文字列から個別の行を読んでいます。代わりにこれを試してみてください:

import json 

with open(path, 'r') as infile: 
    data = json.load(infile) 

json.loadsので、明らかにjson.load

+0

ありがとう、私は問題が最初の行の最初の無効な文字から、それを削除する方法を知らないと思う、私はメモ帳でファイルをチェックすると私には見えない+ +、 – tonyibm

関連する問題