You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何拆分Python 3.6.3中REST API返回的长JSON数据行?

拆分MDM API返回的长行JSON响应

看起来你从MDM的REST API拿到了一堆紧凑的位置数据,想要把它拆分成易读的格式或者提取单个条目?在Python 3.6.3里处理这个很简单,我给你两种常用的方法:

1. 格式化输出成易读的JSON结构

如果只是想把长行数据拆分成换行缩进的格式,用Python内置的json模块就能搞定。不管你拿到的是原始JSON字符串还是已经解析好的Python列表/字典,都能处理:

情况A:已经是Python对象(比如用requests.get().json()获取的)

import json

# 假设这是你从API拿到的完整数据(补全了你截断的部分)
location_data = [
    {'SampleTime': '4/17/2018 6:39:00 PM', 'Latitude': '32.18007400', 'Longitude': '-94.35314700', 'Elevation': '72.76', 'Speed': '16.43', 'DeviceId': {'Value': 74365}, 'Id': {'Value': 126709703}},
    {'SampleTime': '4/17/2018 6:24:00 PM', 'Latitude': '32.18735200', 'Longitude': '-94.36022700', 'Elevation': '64.67', 'Speed': '5.59', 'DeviceId': {'Value': 74365}, 'Id': {'Value': 126709702}}
]

# 格式化输出,indent=4表示用4个空格缩进,sort_keys=False保持原字段顺序
formatted_output = json.dumps(location_data, indent=4, sort_keys=False)
print(formatted_output)

运行后你会得到:

[
    {
        "SampleTime": "4/17/2018 6:39:00 PM",
        "Latitude": "32.18007400",
        "Longitude": "-94.35314700",
        "Elevation": "72.76",
        "Speed": "16.43",
        "DeviceId": {
            "Value": 74365
        },
        "Id": {
            "Value": 126709703
        }
    },
    {
        "SampleTime": "4/17/2018 6:24:00 PM",
        "Latitude": "32.18735200",
        "Longitude": "-94.36022700",
        "Elevation": "64.67",
        "Speed": "5.59",
        "DeviceId": {
            "Value": 74365
        },
        "Id": {
            "Value": 126709702
        }
    }
]

情况B:拿到的是原始JSON字符串

如果API返回的是未解析的长字符串,先解析成Python对象再格式化:

import json

# 原始长行JSON字符串(注意补全截断的部分)
raw_json = '''[{"SampleTime": "4/17/2018 6:39:00 PM", "Latitude": "32.18007400", "Longitude": "-94.35314700", "Elevation": "72.76", "Speed": "16.43", "DeviceId": {"Value": 74365}, "Id": {"Value": 126709703}}, {"SampleTime": "4/17/2018 6:24:00 PM", "Latitude": "32.18735200", "Longitude": "-94.36022700", "Elevation": "64.67", "Speed": "5.59", "DeviceId": {"Value": 74365}, "Id": {"Value": 126709702}}]'''

# 解析成Python列表
location_data = json.loads(raw_json)

# 之后就可以用上面的格式化方法了
formatted_output = json.dumps(location_data, indent=4, sort_keys=False)
print(formatted_output)

2. 遍历拆分每个数据条目

如果需要单独处理每个位置样本(比如提取设备ID、经纬度等),直接遍历列表里的每个字典就行:

# 还是用上面的location_data
for idx, entry in enumerate(location_data, 1):
    print(f"=== 第{idx}条位置数据 ===")
    print(f"采样时间: {entry['SampleTime']}")
    print(f"经纬度: {entry['Latitude']}, {entry['Longitude']}")
    print(f"海拔: {entry['Elevation']} 米")
    print(f"速度: {entry['Speed']} 单位")
    print(f"设备ID: {entry['DeviceId']['Value']}")
    print(f"记录ID: {entry['Id']['Value']}\n")

运行后输出:

=== 第1条位置数据 ===
采样时间: 4/17/2018 6:39:00 PM
经纬度: 32.18007400, -94.35314700
海拔: 72.76 米
速度: 16.43 单位
设备ID: 74365
记录ID: 126709703

=== 第2条位置数据 ===
采样时间: 4/17/2018 6:24:00 PM
经纬度: 32.18735200, -94.36022700
海拔: 64.67 米
速度: 5.59 单位
设备ID: 74365
记录ID: 126709702

这些方法在Python 3.6.3里都能完美运行,因为json模块是内置的,不需要额外安装依赖。如果你的原始数据有截断,记得先补全成合法的JSON格式哦。

内容的提问来源于stack exchange,提问作者Brett Wilson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:31:08