我最近在解析 JSON 时碰壁了。你看,在使用 CloudFlare 客户端接口 API 时,我想查找特定 IP 的“威胁等级”。问题是由于 API 的设计,格式是这样的;
{
response: {
xxx.xxx.xxx.xxx: <value>,
calls_left: 299
},
result: "success",
msg: null
}
xxx.xxx.xxx.xxx
表示我需要从中检索数据的字段名称。立即,您可能会看到我面临的问题;解析字符串中的点字符被假定为当前路径中的子级别。
<value>
代表IP的实际评级。但是,从它返回的格式和数据类型会有所不同。在不构成威胁或没有威胁等级的 IP 上,它false
以布尔值形式返回。在搜索引擎爬虫上,它以字符串的形式返回"SE:<var>"
(其中<var>
是数值)。对于已知威胁,它会返回"BAD:<var>"
(其中<var>
是一个数值)。因此,我不能依赖返回的已知数据类型。
然而,主要问题是尝试从该字段读取值显然会由于字段名称中的点而失败。