网站资料 · 技术情报 · 相似站点

goessner.net

暂未发现付费内容

分类: 其他

标签:goessner.net
访问网站

更新时间:2026-10-10 11:07 语言:未知(默认) 网站访问:正常

站内浏览 0 次 访问跳转 0 次
stefan.goessner 首页完整截图
JSONPath 是什么?它和 XPath 有什么关系?

JSONPath 是一种用于选取 JSON 结构部分的路径表达式语法,由 Stefan Goessner 在 goessner.net 上提出。它的设计目标很直接:让 JSON 寻址像 XPath 处理 XML 一样自然。JSONPath 借鉴了 XPath 1.0 的思路,但只覆盖其核心部分,并基于 C 语言家族的特性来设计表达式。如果你需要在嵌套 JSON 中定位某个字段或一组节点,JSONPath 就是为此准备的轻量方案。

JSONPath 解决什么问题

JSON 结构本身用 C 家族语言处理并不困难,但缺少一种通用的、声明式的寻址方式。XPath 在 XML 世界里承担了这个角色,JSON 却没有对应物。JSONPath 填补的正是这个空白:用一条路径表达式,从任意 JSON 结构中选出想要的部分。

和 XPath 的对应关系

JSONPath 常被理解为“XPath for JSON”,两者的表达式形式高度相似。以 goessner.net 给出的例子为例:

用途 JSONPath XPath
选取某本书的标题 $..book[2].title //book[3]/title

可以看到,JSONPath 用 $ 表示根,用 .. 表示递归下降,用 [n] 表示数组下标,整体结构和 XPath 的 //、[n] 一一对应。区别在于 JSONPath 只保留 XPath 1.0 的核心能力,不追求完整覆盖。

语法元素与实现

据 goessner.net 介绍,JSONPath 由一小组共九个语法元素构成,足以组合出复杂的路径表达式。它同时提供了轻量实现:

  • jsonpath.js:面向客户端,在浏览器中访问 JSON 结构
  • jsonpath.php:面向服务端

这两个文件可以免费下载。此外,Atif Aziz 在很短时间内贡献了 C# 移植版 jsonpath.cs。

谁适合用它

如果你在做前端或 PHP 项目,需要从深层嵌套的 JSON 中提取数据,又不想写一堆循环和条件判断,JSONPath 是一个直接可用的选择。它语法简洁、实现轻量,且与 XPath 的心智模型一致,熟悉 XPath 的人几乎可以立刻上手。

JSONPath 的基本语法元素有哪些?

JSONPath 是一套用于定位 JSON 结构片段的路径表达式语法,由 Stefan Goessner 在 goessner.net 上提出。它的设计目标与 XPath 类似:XPath 用来选取 XML 文档中的节点,JSONPath 用来选取 JSON 中的部分数据。根据 goessner.net 的说明,JSONPath 最初只包含九种语法元素,用它们就能组合出相当复杂的路径表达式。下面按“从根出发、逐层定位”的顺序说明这些元素的作用。

从根开始:$

路径表达式以 $ 开头,表示 JSON 结构的根。例如:

{
  "store": {
    "book": [
      { "title": "A", "price": 10 },
      { "title": "B", "price": 20 }
    ]
  }
}

$.store 选取根下的 store 对象。

访问成员与数组:点号与方括号

  • . 用于访问对象成员,如 $.store.book。
  • [] 既可以按名字访问成员,也可以按索引访问数组元素,如 $.store.book[0] 取第一本书。
  • 两者可以混用,$.store.book[2].title 就是 goessner.net 给出的示例写法,对应 XPath 中的 //book[3]/title(注意 JSONPath 索引从 0 开始,XPath 位置从 1 开始)。

通配与递归:* 和 ..

  • * 是通配符,匹配当前层级下的任意成员或元素,如 $.store.*。
  • .. 是递归下降,用于跨层级查找,不关心中间隔了多少层。$..book 会找出结构中任意深度的 book;$..book[2].title 则先递归找到 book,再取第三项的书名。

数组切片与并集

  • 切片写在方括号里,形如 [start:end:step],用于选取数组的一段,例如 $.store.book[0:2]。
  • 并集用逗号分隔多个名字或索引,如 $.store.book[0,1] 或 $['store','other'],一次选取多个目标。

过滤表达式:?()

过滤用于按条件筛选数组元素或对象成员,写在 ?() 中,例如 $..book[?(@.price < 15)] 选出价格低于 15 的书。这里的 @ 代表当前正在判断的节点。

脚本表达式:()

括号内可写脚本表达式做进一步计算或取值,具体能力取决于所用实现的语言环境。

语法元素速查

元素 含义
$ 根节点
. 或 [] 访问成员 / 数组元素
* 通配,匹配任意成员或元素
.. 递归下降,跨层级查找
[start:end:step] 数组切片
[a,b] 并集,选取多个目标
?() 过滤表达式
() 脚本表达式
@ 过滤或脚本中的当前节点

实现与获取方式

goessner.net 提供了 JSONPath 的轻量实现:jsonpath.js 用于客户端,jsonpath.php 用于服务端,页面说明可以免费下载。同一页面还提到 Atif Aziz 贡献了 C# 移植版 jsonpath.cs。不同语言、不同库对上述元素的覆盖范围可能不完全一致,实际使用时以所用实现的文档为准。

使用时的常见注意点

  • 索引从 0 开始,与 XPath 的 1 起始位置不同,迁移表达式时要换算。
  • .. 递归下降在深层或大型结构上可能返回大量结果,也会带来性能开销,能确定层级时优先用具体路径。
  • 过滤表达式中的比较运算符和函数支持因实现而异,跨库移植前先验证。
  • 路径表达式本身只负责“选取”,返回结果的形态(单个值、数组还是空)由实现决定,取值前应确认。
JSONPath 有哪些实现和下载资源?

JSONPath 最初由 Stefan Goessner 以轻量工具形式实现,提供 JavaScript 和 PHP 两个版本,分别用于客户端和服务器端访问 JSON 结构。这两个文件可以直接从 goessner.net 免费下载:jsonpath.js 和 jsonpath.php。此外,社区还出现了 C# 移植版本 jsonpath.cs,由 Atif Aziz 完成。

官方实现

goessner.net 是 JSONPath 的原始发布站点,作者在介绍 JSONPath 时同步提供了配套实现。

实现文件 语言 典型用途
jsonpath.js JavaScript 在浏览器或 Node.js 等客户端环境解析 JSONPath 表达式
jsonpath.php PHP 在服务器端对 JSON 结构执行路径查询

这两个文件被描述为“轻量工具”,用于在客户端和服务器端访问 JSON 结构。作者明确说明可以免费下载,并提供了进一步阅读的入口。

社区移植

在 JSONPath 发布后不久,Atif Aziz 贡献了 C# 版本 jsonpath.cs。作者在站点更新中特别致谢,说明该移植在很短时间内完成。

相关脚本与更新

goessner.net 的下载区还包含与 JSON 相关的其他脚本,例如 XML 与 JSON 互转的 xml2json.js 和 json2xml.js。作者提到这些脚本有若干 bug 修复和更新,并引导读者到下载区查看详情。

获取方式

  • 直接访问 goessner.net,进入 Download 区域查找上述文件。
  • 站点首页导航包含 Home、Lehre、Download、Info 等入口,下载资源集中在 Download 下。
  • 页面未提及价格或登录限制,但也没有说明这些资源采用何种许可协议;如需商用或再分发,建议先确认授权条款。
如何在 XML 和 JSON 之间转换?

Stefan Goessner 在 XML.com 发表过一篇关于 XML 与 JSON 互相转换的文章,并提供了配套的转换脚本,包括 xml2json.js 和 json2xml.js。如果你需要在这两种数据格式之间迁移或做互操作,可以直接使用这套脚本,并在 goessner.net 的下载区获取后续的 bug 修复和更新版本。

转换脚本从哪里获取

根据 goessner.net 上的记录,转换脚本与文章配套发布,入口如下:

  • 文章:XML.com 上发表的 Converting Between XML and JSON
  • 脚本:xml2json.js 和 json2xml.js
  • 更新:作者提到脚本有若干 bug 修复和更新,具体内容在网站的 download 区

也就是说,先看文章了解转换思路,再去下载区拿最新脚本,是这套资源的正常使用顺序。

两个方向分别对应什么

方向 脚本 输入 输出
XML → JSON xml2json.js XML 结构 JSON 结构
JSON → XML json2xml.js JSON 结构 XML 结构

两个脚本是独立文件,按你需要转换的方向选用即可,不需要同时引入。

适合用在什么场景

这套转换适合需要在两种数据格式之间迁移或互操作的场景,例如:

  • 已有 XML 数据源,但下游程序更习惯处理 JSON
  • 已有 JSON 配置或数据,但某个工具或接口只接受 XML
  • 在浏览器端或服务端做格式适配时,需要一个轻量的转换脚本

使用时的注意点

  • 脚本是 JavaScript 实现,运行环境需要支持 JavaScript。
  • 作者明确提到脚本有过 bug 修复和更新,使用前建议先到下载区确认拿到的是较新版本,而不是早期副本。
  • XML 与 JSON 的数据模型并不完全一一对应(例如属性、文本节点、数组的表示方式),转换结果是否符合预期,取决于你的具体数据结构,建议先用一小段代表性数据验证再批量使用。

和 JSONPath 的关系

同一网站还提供了 JSONPath,作者把它描述为“XPath for JSON”,用于在 JSON 结构中按路径表达式选取部分内容。如果你的流程是“先把 XML 转成 JSON,再从中取字段”,那么 xml2json.js 负责格式转换,JSONPath 负责在转换后的 JSON 里定位数据,两者可以配合使用。

goessner.net 是什么网站?

goessner.net 是 Stefan Goessner 的个人技术网站,副标题为“Mechanik, das Web und der ganze Rest”(机械、Web 以及其余的一切)。它主要发布技术文章和自研工具,内容集中在 Web 数据格式处理方向,尤其是 JSONPath 和 XML/JSON 转换。网站提供下载区,可获取相关脚本;从现有资料看,它属于个人技术博客/资料站,而非商业平台。

网站定位与维护者

  • 维护者:Stefan Goessner。
  • 主题范围:机械、Web 及其他技术话题。
  • 内容形式:技术文章、工具发布、下载资源。
  • 性质:个人技术站点,不是商业服务或产品官网。

主要收录内容

JSONPath:面向 JSON 的路径表达式

网站最常被引用的是 JSONPath。作者提出它的动机是:既然 XML 有 XPath 来选取节点,JSON 结构也应有类似的路径表达式语法,用于定位 JSON 中的部分数据。

JSONPath 的定位是:

  • 一种路径表达式语法,像 XPath 选取 XML 节点那样选取 JSON 结构的部分内容。
  • 语法元素基于 C 语言家族特征设计,只覆盖 XPath 1.0 的核心部分。
  • 示例表达式 $..book[2].title,对应 XPath 的 //book[3]/title。

作者当时给出的实现是轻量工具,分别用 JavaScript 和 PHP 编写,用于在客户端和服务器端访问 JSON 结构,并提供 jsonpath.js、jsonpath.php 下载。页面还记录了一个后续更新:Atif Aziz 很快贡献了 C# 移植版 jsonpath.cs。

XML 与 JSON 相互转换

网站还收录了作者发布在 XML.com 上的文章《Converting Between XML and JSON》,并配套提供转换脚本。页面提到 xml2json.js 和 json2xml.js 有缺陷修复与更新,更多内容在下载区。

其他技术记录

站内还包含会议与活动记录,例如作者参加阿姆斯特丹 XTech 2006 的见闻,包括 Ajax Developers' Day、Brendan Eich 关于“JavaScript 2 and the Future of the Web”的闭幕演讲,以及关于 Web Component Model 的文章。

适合谁访问

  • 需要了解 JSONPath 起源、语法设计思路的人。
  • 想获取 jsonpath.js、jsonpath.php、jsonpath.cs 或 XML/JSON 转换脚本的开发者。
  • 对早期 Web 技术讨论、XTech 2006 等会议内容感兴趣的技术读者。

需要注意

  • 网站内容带有明显的个人项目和时间印记,部分文章可追溯到 2006 年前后。
  • 下载资源的具体可用性、版本状态和许可条款,需以站内下载区当前说明为准。
  • 它不是 JSONPath 的官方标准站点,而是该工具早期提出与发布的个人来源之一。

网站信息概览

从公开技术信号来看,长期注册记录并非孤立存在,基础设施也有专业服务支撑,因此更可能具备稳定维护流程,而非一次性部署。从当前可见信息判断,当规范链接、描述或分享字段共同不足时,搜索平台更依赖自行推断,可能出现摘要偏题、图片缺失或权重分散。

域名与注册信息

域名最早登记于 2001 年,注册历史相对较长。状态中包含防转移保护,未发现 hold 或删除流程标记。该网站采用常见域名后缀 .net。

DNS 与邮件配置

现有迹象表明,名称服务器由 ui-dns.biz 提供,使用专业 DNS 托管。从公开技术信号来看,该域名的收件服务由 IONOS Mail 提供。未发现 CNAME,当前记录直接解析到地址。可见邮件策略包含 SPF 和 DMARC,DKIM 是否启用尚待进一步确认。RDAP 将 DNSSEC 标记为未签名。

TLS 与证书

综合当前可观察字段,HTTPS 证书来自 Sectigo Limited 商业证书服务。RSA 密钥长度为 2048 位,符合当前常见配置。TLS 握手提供了完整的证书链数据。证书未包含组织名称,按现有字段归为 DV 域名验证证书。从当前可见信息判断,证书总有效期约 379 天,剩余 17 天。

HTTP 响应

未检测到常用浏览器安全响应头。未发现 X-Powered-By,后端框架信息未通过该字段公开。HTTP 字段未显示敏感内部网络标识。HTTP Server 字段已隐藏详细版本。HTTP 响应没有提供边缘代理证据。

技术栈分析

现有迹象表明,本次识别到 Blogger、Apache,具体版本为未知。信息暴露面比直接公开版本更小,实际风险仍取决于生产环境采用的版本和配置。

SEO 与社交分享

首页未检测到 Meta Description。CMS 或生成器信息通过元标签可见。页面未检测到 Viewport 元标签。页面没有声明首选 URL。首页没有专门配置社交平台分享信息。

主机和电子邮件

DNSui-dns.biz
主机IONOS SE
电子邮件IONOS Mail
位置 Germany 国旗Germany 217.160.0.187

用户评价(0)

  • 暂无评价。

页面、搜索与分享信息

页面描述未检测到
规范链接未检测到
语言未知(默认)
Twitter Card未检测到

未知

未发现 robots.txt

暂未发现 Sitemaps

域名登记事实 RDAP / WHOIS

注册商IONOS SE
注册时间2001-03-03
到期时间2027-03-03
域名状态client transfer prohibited
名称服务器ns1104.ui-dns.biz、ns1104.ui-dns.com、ns1104.ui-dns.de、ns1104.ui-dns.org
DNSSECunsigned

DNS 记录

类型名称值TTL优先级
Agoessner.net217.160.0.187508—
AAAAgoessner.net2001:8d8:100f:f000::2a82283—
MXgoessner.netmx00.ionos.de360010
MXgoessner.netmx01.ionos.de360010
NSgoessner.netns1104.ui-dns.biz172800—
NSgoessner.netns1104.ui-dns.com172800—
NSgoessner.netns1104.ui-dns.de172800—
NSgoessner.netns1104.ui-dns.org172800—
TXTgoessner.netv=spf1 include:_spf-eu.ionos.com ~all3600—
DMARC_dmarc.goessner.netv=DMARC1;p=reject;rua=mailto:[email protected]3600—

TLS 与证书

定性结果配置正常
支持协议TLSv1.2、TLSv1.3
协商协议TLSv1.3
证书主题*.goessner.net
颁发者Sectigo Limited
有效期至2026-10-27T23:59 · 记录时剩余 17 天
验证事实证书信任:通过 · 域名匹配:通过

HTTP 响应标头

标头值
content-typetext/html
serverApache

已识别技术

BloggerApache

最近更新

  • 网站图像资源
  • 页面截图
  • 网络归属信息
  • 网站技术
  • 页面与搜索信息
  • HTTP 响应信息
  • TLS 与证书
  • DNS 信息
  • 域名登记信息
  • 网站名称
  • 网站资料
  • 网站简介
  • 网站名称