当前位置: 首页 > 知识库问答 >
问题:

为什么这个JSON数据无效?[重复]

西门建安
2023-03-14

我有以下JSON文件,它是通过调用数据流生成的。使用以下代码,我无法打开文件,而是出现以下错误:

raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 2 column 1

我使用了Jsonlint并得到以下错误:

Expecting 'EOF', '}', ',', ']', got '{'

我曾尝试通过pandas打开该文件,但也不起作用。任何帮助都将不胜感激,我不知道如何调试这一点。

from pprint import pprint

datajson = 'errortest.json'

with open(datajson) as f:
    data = json.load(f)

pprint(data)

输出:

{"target": {"icao_address": "A1AE05", "timestamp": "2019-10-27T22:25:55Z", "altitude_baro": 26000, "heading": 330.0, "speed": 389.9, "latitude": 34.636047, "longitude": -118.822127, "callsign": "SWA5282", "collection_type": "terrestrial", "ingestion_time": "2019-10-27T22:25:59Z", "tail_number": "N207WN", "icao_actype": "B737", "flight_number": "WN5282", "origin_airport_icao": "KLGB", "destination_airport_icao": "KOAK", "scheduled_departure_time_utc": "2019-10-27T22:05:00Z", "scheduled_departure_time_local": "2019-10-27T15:05:00", "scheduled_arrival_time_utc": "2019-10-27T23:20:00Z", "scheduled_arrival_time_local": "2019-10-27T16:20:00"}}
{"target": {"icao_address": "AB79DE", "timestamp": "2019-10-27T22:25:55Z", "altitude_baro": 30025, "heading": 260.0, "speed": 410.0, "latitude": 35.850716, "longitude": -101.077667, "callsign": "AAL2102", "collection_type": "terrestrial", "ingestion_time": "2019-10-27T22:25:59Z", "tail_number": "N839AW", "icao_actype": "A319", "flight_number": "AA2102", "origin_airport_icao": "KCMH", "destination_airport_icao": "KLAX", "scheduled_departure_time_utc": "2019-10-27T20:03:00Z", "scheduled_departure_time_local": "2019-10-27T16:03:00", "scheduled_arrival_time_utc": "2019-10-28T01:00:00Z", "scheduled_arrival_time_local": "2019-10-27T18:00:00", "estimated_arrival_time_utc": "2019-10-28T00:56:00Z", "estimated_arrival_time_local": "2019-10-27T17:56:00"}}

共有1个答案

姬天逸
2023-03-14

这不是JSON。这是在不同的行中写入同一文件的一组单独的JSON字符串。它通常被称为“JSON行”,对于这样的文件,通常不太容易混淆的扩展名是<代码>。jsonl,而非代码。json。

读取各个行并将它们传递给json.loads

 类似资料:
  • 大家好,我在项目中遇到了一个大问题。我发出OkHttp请求,从服务器收到响应,一切都很完美。问题是为什么我不能显示数据,我在xml和listview中创建了一个模型项(这是必需的视图),当我访问该页面时,该页面为空。 有人能帮我解决这个问题吗? 页面代码如下:

  • 我无法理解的是,为什么当我使用Eclipse将所有依赖项提取到jar中的文件夹结构中时,jar不再作为一个正确的Spring Boot应用程序运行。 为了重复我在这里所做的事情,只需使用一个简单的Spring Boot应用程序,并从Eclipse中选择以下内容: 导出-->Runnable JAR-->选择Main Class-->将所需库提取到Jar中。 我只是想了解Spring实际上是如何通过

  • 考虑到这个问题:峰值元素是一个大于相邻元素的元素。 给定一个输入数组,其中num[i]≠ num[i 1],找到一个peak元素并返回其索引。 该数组可以包含多个峰值,在那种情况下将索引返回到任何一个峰值都是精细的。 示例:Array=[1,4,5,7,4,3,1]。峰值指数=3(即7)。 下面的代码非常有效(不仅仅适用于此测试用例): 我不明白它是如何工作的——我以为二进制搜索只是用于排序数组/

  • 我有包含非法字符的json 我想要从服务器spring发送到客户端的明文,这样客户端就可以获得完整的数据。 如何将字符串的非法字符替换为有效的json对象?

  • 问题内容: 我在文件中有此JSON: 我编写了以下脚本来打印所有JSON数据: 但是,该程序会引发异常: 如何解析JSON并提取其值? 问题答案: 您的数据不是有效的JSON格式。您有什么时候应该拥有: 用于JSON数组,在Python 中称为 用于JSON对象(在Python 中称为JSON对象) JSON文件的外观如下: 然后,您可以使用您的代码: 有了数据,您现在还可以找到类似的值: 试试看

  • 我的代码基于SpringBoot,接收post请求,解析json数据并使用jdbc执行。 } curl命令如下所示: 但是,当我通过curl发送post请求时,无法解析参数并且始终为空。 为什么会发生这个问题,如何解决? 堆栈跟踪: