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

基于Open Notify API的ISS追踪器:如何实现JSON数据逐行输出?

解决ISS追踪器JSON数据单行输出问题

你的问题出在每次调用json.dump()时,会直接把JSON对象连续写入文件,没有添加换行分隔,导致所有数据挤在一行。只需在每次写入单个JSON对象后,手动添加换行符即可实现每行一条数据的效果。

修改方案一:每次dump后写入换行符

import requests
import json
import time
URL = "http://api.open-notify.org/iss-now.json"

filename = 'store.json'
i = 0
with open(filename, 'w') as file_object:
    while i < 11:
        r = requests.get(url=URL)
        data = r.json()

        save = {
            'time': data['timestamp'],
            'latitude': data['iss_position']['latitude'],
            'longitude': data['iss_position']['longitude']
        }
        json.dump(save, file_object)
        file_object.write('\n')  # 新增:写入JSON后添加换行
        time.sleep(1)
        i += 1

修改方案二:用json.dumps生成字符串后加换行写入

这种方式更直观,先把JSON转为字符串,再加上换行符写入文件:

import requests
import json
import time
URL = "http://api.open-notify.org/iss-now.json"

filename = 'store.json'
i = 0
with open(filename, 'w') as file_object:
    while i < 11:
        r = requests.get(url=URL)
        data = r.json()

        save = {
            'time': data['timestamp'],
            'latitude': data['iss_position']['latitude'],
            'longitude': data['iss_position']['longitude']
        }
        # 直接写入带换行的JSON字符串
        file_object.write(json.dumps(save) + '\n')
        time.sleep(1)
        i += 1

两种方法最终都会生成JSON Lines格式的文件,每行一个独立的JSON对象,既方便后续逐行解析读取,也满足你要求的每行一条数据的展示需求。

内容的提问来源于stack exchange,提问作者Jonathan Cha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:30:57