不喜欢广告? 无广告 今天

iCalendar (ICS) 到 JSON 转换器

数据开发人员文本
广告 移除?
[iotools_icalendar_ics_to_json_converter]
广告 移除?

指导

iCalendar (ICS) 到 JSON 转换器

iCalendar (ICS) 到 JSON 转换器

iCalendar (ICS) 到 JSON 转换器会将符合 RFC 5545 格式的日历内容解析为结构化的 JSON 数据,您可以阅读、转换或将其输入到其他程序中。请将从 Google 日历、Apple 日历或 Outlook 导出的 .ics 文件内容粘贴到输入框中,或直接拖放文件到上传区域。该工具会在您的浏览器中展开长行内容,解码文本值,将属性参数与值分离,将 DTSTART 和 DTEND 解析为 ISO 8601 格式,并将 RRULE 转换为结构化对象——所有操作均在本地浏览器中完成,不会上传至服务器。

如何使用

  1. 将 .ics 文件的内容粘贴到输入框中,或直接拖放文件到上传区域。
  2. 选择您的输出选项:美化格式、扁平化的事件数组、ISO 8601 日期解析,或同时包含原始属性值和解析后的值。
  3. 可选地启用 RRULE 预览功能,以查看任何重复事件的前 N 个实例。
  4. 复制 JSON 输出结果或下载为 calendar.json.

特征

  • 符合 RFC 5545 的展开格式 – 重新连接以空格开头的续行,确保 DESCRIPTION 和 URL 值被正确重建。
  • 属性参数被保留 – TZID、CN、RSVP、VALUE 以及任何 X- 参数都会被保留在值旁边的一个结构化对象中。 params 对象
  • 日期解析 – DTSTART、DTEND、DTSTAMP、CREATED、LAST-MODIFIED、RECURRENCE-ID 和 DUE 都会被转换为 ISO 8601 格式,并带有日期仅、UTC 和 TZID 绑定值的标记。
  • RRULE 作为对象 – FREQ、INTERVAL、COUNT、UNTIL、BYDAY、BYMONTH 等参数会被解析为结构化对象,而不是一个单一的不可读字符串。
  • VTIMEZONE 和 VALARM 保持不变 – 嵌套组件会被作为数组发布到其父级 VCALENDAR 或 VEVENT 中。 components 数组位于其父级VCALENDAR或VEVENT中。
  • 组织者和参与者地址 – mailto: 前缀会被移除并放入一个字段中,同时保留原始地址。 email 字段的同时保留原始内容 calAddress.
  • 重复规则预览 – 可选地将 DAILY、WEEKLY(带 BYDAY)、MONTHLY 和 YEARLY 规则扩展为前 N 个实例,以便快速查看。
  • 仅客户端 – 文件在您的浏览器中被解析。日历内容永远不会离开您的设备。

何时使用此工具

当您需要程序化地读取日历数据时,请使用此转换器——例如比较两个 .ics 导出文件、将事件加载到电子表格中、为聊天机器人预处理会议,或审计导出的预约实际包含的内容。与原始的折行 iCalendar 文本相比,JSON 更容易进行 grep 搜索、验证,并将其传递给其他工具。

广告 移除?

常问问题

  1. 什么是 RFC 5545,以及它在解析 .ics 文件时为何重要?

    RFC 5545 是定义 Google 日历、Apple 日历、Outlook 和大多数日历应用所使用的 iCalendar 数据格式的规范。它定义了属性名称、参数语法、值类型、75 字节的行折叠规则、文本值中的转义、重复规则(RRULE)以及通过 VTIMEZONE 块引用时区的方法。正确解析 .ics 文件意味着处理所有这些内容——简单地按换行符或逗号分割会遗漏转义序列和折叠的延续行。

  2. iCalendar 内容中的行折叠是什么?

    行折叠规则规定,任何超过 75 字节的内容行都必须跨多行拆分,每行延续部分必须以单个空白字符(空格或制表符)开头。在读取 .ics 文件时,必须在解析前重新连接这些折叠行,否则长描述、URL 和重复规则将被截断,导致属性值损坏。

  3. VTIMEZONE 如何与 DTSTART 和 DTEND 相关?

    DTSTART 和 DTEND 可以携带 TZID 参数,该参数引用日历中定义的 VTIMEZONE 块。VTIMEZONE 块描述了该时区的 UTC 偏移及其夏令时转换规则,因此日历中写入的墙钟时间可以被解析为精确的 UTC 时间点。带有尾随 Z 的时间已经处于 UTC,而没有 TZID 且没有 Z 的时间是浮动的——它们应显示在读者所在时区。

  4. 为什么 SUMMARY 和 DESCRIPTION 中的逗号、分号和换行符需要转义?

    在文本值内部,逗号、分号和反斜杠,以及字面意义上的换行符具有更高层次的结构意义:逗号用于分隔列表项,分号用于分隔参数,换行符用于结束内容行。RFC 5545 §3.3.11 保留了 \\、\,、\; 和 \n(或 \N)的转义序列,以便作者可以在值中包含这些字符。解析器必须在拆分行后反转这些转义,而不是在拆分前。

  5. 什么是 RRULE,它与显式日期列表有何不同?

    RRULE 编码一个重复模式——例如 FREQ=WEEKLY;BYDAY=MO,WE;COUNT=10 表示每周一和周三各发生 10 次。它是一个紧凑的指令,日历应用会将其扩展为具体的实例。RDATE 和 EXDATE 与 RRULE 互补:RDATE 为系列添加额外的显式日期,EXDATE 则从系列中移除特定日期。它们共同以少数几行描述复杂的日历(如节假日、锚定例外)。

想要享受无广告的体验吗? 立即无广告

安装我们的扩展

将 IO 工具添加到您最喜欢的浏览器,以便即时访问和更快地搜索

添加 Chrome 扩展程序 添加 边缘延伸 添加 Firefox 扩展 添加 Opera 扩展

记分板已到达!

记分板 是一种有趣的跟踪您游戏的方式,所有数据都存储在您的浏览器中。更多功能即将推出!

广告 移除?
广告 移除?
广告 移除?

新闻角 包含技术亮点

参与其中

帮助我们继续提供有价值的免费工具

给我买杯咖啡
广告 移除?