试图将两个 json 数据放入 python 列表但收到错误消息

Posted

技术标签:

【中文标题】试图将两个 json 数据放入 python 列表但收到错误消息【英文标题】:Trying to put two json data into a python list but get error message 【发布时间】:2021-07-03 00:49:43 【问题描述】:

我正在使用 pymongo 从 MongoDB 数据库中获取数据,然后将光标转换为 JSON 并获取特定数据。

JSON 数据格式,detailed_data:

['Column 0': 13.57557,
  'Column 1': 12.656892,
  'Column 2': -1.424328,
  'Column 3': -2.302774,
  'Column 4': 404.9216,
 'Column 0': 13.844373,
  'Column 1': 12.61062,
  'Column 2': -1.435429,
  'Column 3': -1.964423,
  'Column 4': 404.97818,
 'Column 0': 13.996934,
  'Column 1': 12.669785,
  'Column 2': -1.384147,
  'Column 3': -1.830788,
  'Column 4': 405.187378,
 'Column 0': 14.060876,
  'Column 1': 12.755087,
  'Column 2': -1.378407,
  'Column 3': -2.02023,
  'Column 4': 404.892548,
 'Column 0': 14.095317,
  'Column 1': 12.877163,
  'Column 2': -1.363435,
  'Column 3': -2.072163,
  'Column 4': 404.698822]

JSON 数据格式;结果

['_id': ObjectId('606702b2b1e51ef27782dcf5'),
  'FileName': 'ex.csv',
  'BriefInfo': '',
  'Size': '193.9KB',
  'UserName': '12795757',
  'data': ['Column 0': 13.57557,
    'Column 1': 12.656892,
    'Column 2': -1.424328,
    'Column 3': -2.302774,
    'Column 4': 404.9216,
   'Column 0': 13.844373,
    'Column 1': 12.61062,
    'Column 2': -1.435429,
    'Column 3': -1.964423,
    'Column 4': 404.97818,
   'Column 0': 13.996934,
    'Column 1': 12.669785,
    'Column 2': -1.384147,
    'Column 3': -1.830788,
    'Column 4': 405.187378,
   'Column 0': 14.060876,
    'Column 1': 12.755087,
    'Column 2': -1.378407,
    'Column 3': -2.02023,
    'Column 4': 404.892548,
   'Column 0': 14.095317,
    'Column 1': 12.877163,
    'Column 2': -1.363435,
    'Column 3': -2.072163,
    'Column 4': 404.698822]

这是代码:我正在尝试将 detail_data 和 result 放入 python 列表,然后再次将其转换为 JSON。但我得到一个错误:

ObjectId 类型的对象不是 JSON 可序列化的

为什么会发生这个错误?

import json
import pymongo
from bson.json_util import dumps
from bson.json_util import loads
import random
import pandas as pd
import numpy as np
import csv
client = pymongo.MongoClient('username:password')
db = client.datasets


result = db.files.find("FileName":"ex.csv","UserName":"12795757")

result = loads(dumps(result))
detailed_data = result[0]["data"]
json.dumps([detailed_data, result])

【问题讨论】:

这能回答你的问题吗? TypeError: ObjectId('') is not JSON serializable 【参考方案1】:

您应该使用 json.encode(result, cls=JSONEncoder),因为 mongodb 结果包含其他元数据以及结果。即它看起来像 JSON,但它不是 JSON。

【讨论】:

以上是关于试图将两个 json 数据放入 python 列表但收到错误消息的主要内容,如果未能解决你的问题,请参考以下文章

将 Json 数据放入列表视图

我无法从 JSON 获取数据并且没有错误

试图将 MySQL 查询的结果放入 JavaScript 数组

使用 JQuery 将 JSON 数组放入 HTML 列表

Python 和 Scrapy,并试图将抓取的数据放入 MariaDB/MYSQL 数据库

如何从 JSON 解析到 Unity GameObject