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

打印确认JSON含sessionId但解析时提示key不存在如何解决

问题根因

你用错了解析方法:org.json.HTTP.toJSONObject()的设计目标是解析HTTP头格式的键值对文本(每行格式为键: 值,和HTTP请求/响应头的格式一致),根本不是用来解析标准JSON字符串的。
当你传入{"sessionId":"foo"}这种标准JSON串时,该方法不会按JSON语法解析内容,会错误地把引号、花括号等JSON语法字符算入键名或值的内容,最终生成的JSONObject里不存在名为sessionId的键(实际键名可能带多余的双引号、或者整个结构被错误拆分)。你可以在解析后遍历jsonObject.keySet()打印所有键、或者直接输出jsonObject.toString(),就能看到完全不符合预期的解析结果,此时调用getString("sessionId")自然会抛出键不存在的异常。

修复方案

不要调用HTTP.toJSONObject()处理JSON字符串,直接使用JSONObject的构造方法传入JSON内容即可:

// 读取请求体内容,trim去掉首尾空白、多余BOM等干扰字符
String sessionCookie = req.getReader().lines().reduce("",String::concat).trim();
// 直接用JSONObject构造方法解析标准JSON
JSONObject jsonObject = new JSONObject(sessionCookie);
String someString = jsonObject.getString("sessionId");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 12:42:27