簡體   English   中英

將JSON解碼為Python

[英]decoding JSON into Python

我有以下名為exampleData.json的Python文件:

[
  {
    "startTime" : 1383790636.261329,
    "confidence" : 2,
    "type" : 3,
    "startTime2" : "2013-11-06 21:17:16.261",
    "duration" : 4.287207
  },
  {
    "startTime" : 1383790640.548536,
    "confidence" : 2,
    "type" : 3,
    "startTime2" : "2013-11-06 21:17:20.549",
    "duration" : 3.674701
  },
  {
    "startTime" : 1383790644.223238,
    "confidence" : 2,
    "type" : 3,
    "startTime2" : "2013-11-06 21:17:24.223",
    "duration" : 7.35066
  }
]

(實際文件有大約1000個塊,我在這里僅粘貼了3個)。 我已經使用jsonlint.com驗證了整個JSON文件,並且它是有效的JSON。

我正在嘗試運行以下名為jsonGraph.py的程序,以將代碼輸入python:

import json
import pprint

data = []
with open('D:/Users/Vik/Downloads/exampleData.json') as data_file:
    for line in data_file:
        data.append(json.loads(line))

問題是,當我嘗試運行程序時,出現以下錯誤:

D:\Users\Name>py D:\Users\Name\Downloads\jsonGraph.py
Traceback (most recent call last):
  File "D:\Users\Name\Downloads\jsonGraph.py", line 7, in <module>
    data.append(json.loads(line))
  File "D:\Python33\lib\json\__init__.py", line 319, in loads
    return _default_decoder.decode(s)
  File "D:\Python33\lib\json\decoder.py", line 352, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "D:\Python33\lib\json\decoder.py", line 368, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting object: line 1 column 2 (char 1)

關於什么導致此錯誤的任何想法?

我已經搜索了錯誤消息,並且該網站上有類似的帖子,也有類似的錯誤,但是這個問題是唯一的,其原因有兩個:1.那些是由於使用無效的JSON代碼引起的,而我的是有效的;以及2。略有不同的錯誤消息。 我還檢查了python文檔,沒有發現任何見解。

如果文件是您指定的文件,則不必逐行加載,而必須加載整個文件。

您有一個大的JSON對象 json.load()解析為一個:

import json

with open('D:/Users/Vik/Downloads/exampleData.json') as data_file:
    data = json.load(data_file)

您的代碼嘗試將每一行都視為JSON值; 因為[ (第一行)不是完整的JSON值,所以也不行,因為合並后幾行也不會。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM