Невозможно прочитать и загрузить файл JSON в формате Python, JSON отличается - PullRequest
0 голосов
/ 17 марта 2020

У меня есть JSON в следующем формате, я не могу прочитать и загрузить файл JSON. Ошибка при получении дополнительных данных. Пожалуйста, помогите

{"From":{"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema","id":"e203b3e0-0b89- 11ea-b608-f5b0a8eb5137","name":"Bot","aadObjectId":null,"role":"bot"},"To": 
{"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema","id":"deb09575-8edb-411f-b875-418e7944a315","name":"User","aadObjectId":null,"role":"user"},"Text":""}
{"From":{"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema","id":"e203b3e0-0b89-11ea-b608-f5b0a8eb5137","name":"Bot","aadObjectId":null,"role":"bot"},"To": 
{"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema","id":"a23f6775-c557-489d-996a-d6d3b329a234","name":"User","aadObjectId":null,"role":"user"},"Text":"Let me know if there’s anything else you need."}
{"From":{"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema","id":"e203b3e0-0b89-11ea-b608-f5b0a8eb5137","name":"Bot","aadObjectId":null,"role":"bot"},"To": 
{"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema","id":"a9f3d513-e4d2-48dc-996a-df3c292e707c","name":"User","aadObjectId":null,"role":"user"},"Text":"I’m here if you need anything else."}
{"From":{"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema","id":"e203b3e0-0b89-11ea-b608-f5b0a8eb5137","name":"Bot","aadObjectId":null,"role":"bot"},"To": 
{"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema","id":"b08c1237-82cb-4550-8b19-cef5a8e87439","name":"User","aadObjectId":null,"role":"user"},"Text":""}
{"From":{"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema","id":"e203b3e0-0b89-11ea-b608-f5b0a8eb5137","name":"Bot","aadObjectId":null,"role":"bot"},"To": 
{"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema","id":"7eb76928-1a0e-4e31-80b2-519be0315d56","name":"User","aadObjectId":null,"role":"user"},"Text":""}

Код:

import json
import pandas as pd
from datetime import datetime
import dateutil.parser

##Date Format
date_format = "%Y-%m-%dT%H:%M:%S:%M" 

#ft = 'C:/Users/abc/Desktop/xyz/pqr/aaa/Data5.json'
#data = json.dumps(ft)
#data = json.load(json.dumps(ft))

##Read the JSON file
with open('C:/Users/abc/Desktop/xyz/pqr/aaa/Data5.json',encoding= "utf-8") as f:
    #data = json.loads(json.dumps([f]))
    data = json.load(f)

Ошибка

raise JSONDecodeError("Extra data", s, end)
JSONDecodeError: Extra data

Ответы [ 3 ]

0 голосов
/ 17 марта 2020

Это допустимое значение json:

{"From":{"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema","id":"e203b3e0-0b89- 11ea-b608-f5b0a8eb5137","name":"Bot","aadObjectId":null,"role":"bot"},"To":
   {"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema","id":"deb09575-8edb-411f-b875-418e7944a315","name":"User","aadObjectId":null,"role":"user"},"Text":""}

Но у вас их много, поэтому json по-прежнему находит данные после чтения объекта и задыхается от этого.

Фактически Вы можете прочитать файл 2 строки за раз:

   ...
   ##Read the JSON file
   with open('C:/Users/abc/Desktop/xyz/pqr/aaa/Data5.json',encoding= "utf-8") as f:
       data = []            # initialize an empty list
       for line in f:
           line += next(f)  # concatenate every second line
           data.append(json.loads(line))
0 голосов
/ 17 марта 2020

Посмотрите, дает ли это необходимые данные.

>>> new_data = '[' + re.sub(r"\}\s*\{", "}, {", data) + ']'
>>> json_data = json.loads(new_data)

Просто нужно немного приготовить данные. Предполагая, что это совокупность нескольких JSON пакетов, мы можем разделить их с правильным синтаксисом и превратить в JSON совместимый список с квадратными скобками.

>>> json_data[2]['From']['$type']
'Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema'
0 голосов
/ 17 марта 2020

Если вы поместите объекты json в массив и правильно разделите их запятыми:

[
{"From":
    {"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema",
      "id":"e203b3e0-0b89- 11ea-b608-f5b0a8eb5137",
      "name":"Bot","aadObjectId":null,
      "role":"bot"},
  "To":
    {"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema",
      "id":"deb09575-8edb-411f-b875-418e7944a315",
      "name":"User",
      "aadObjectId":null,
      "role":"user"},
  "Text":""},
{"From":
    {"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema",
      "id":"e203b3e0-0b89-11ea-b608-f5b0a8eb5137",
      "name":"Bot",
      "aadObjectId":null,
      "role":"bot"},
  "To":
    {"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema",
      "id":"a23f6775-c557-489d-996a-d6d3b329a234",
      "name":"User",
      "aadObjectId":null,
      "role":"user"},
  "Text":"Let me know if there’s anything else you need."},
{"From":
    {"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema",
      "id":"e203b3e0-0b89-11ea-b608-f5b0a8eb5137",
      "name":"Bot",
      "aadObjectId":null,
      "role":"bot"},
  "To":
    {"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema",
      "id":"a9f3d513-e4d2-48dc-996a-df3c292e707c",
      "name":"User",
      "aadObjectId":null,
      "role":"user"},
  "Text":"I’m here if you need anything else."},
{"From":
    {"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema",
      "id":"e203b3e0-0b89-11ea-b608-f5b0a8eb5137",
      "name":"Bot",
      "aadObjectId":null,
      "role":"bot"},
  "To":
    {"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema",
      "id":"b08c1237-82cb-4550-8b19-cef5a8e87439",
      "name":"User",
      "aadObjectId":null,
      "role":"user"},
  "Text":""},
{"From":
    {"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema",
      "id":"e203b3e0-0b89-11ea-b608-f5b0a8eb5137",
      "name":"Bot",
      "aadObjectId":null,
      "role":"bot"},
  "To":
    {"$type":"Microsoft.Bot.Schema.ChannelAccount, Microsoft.Bot.Schema",
      "id":"7eb76928-1a0e-4e31-80b2-519be0315d56",
      "name":"User",
      "aadObjectId":null,
      "role":"user"},
  "Text":""}
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...