REST Client调用FHIR接口报错HAPI-1861:JSON含非法字符@
解决FHIR请求中REST Client变量提取引发的JSON解析错误
问题根源
你把REST Client的变量提取语句@patientId = {{createPatient.response.body.$.id}直接写进了请求的JSON正文里,HAPI FHIR服务器会把@当成FHIR资源JSON的一部分,但FHIR的JSON格式不允许这种非法字符,所以触发了HAPI-0450和HAPI-1861解析错误。另外你的提取语句还少了一个闭合的},这也会导致工具解析异常。
修复步骤
- 把变量提取和请求正文分开:REST Client的变量提取语句属于工具的控制语法,必须放在请求体之外,一般是在请求的头部区域(请求方法、URL之后,JSON正文之前),或者单独用
###分隔的块里。比如正确的写法:POST {{fhirBaseUrl}}/Patient Content-Type: application/fhir+json { "resourceType": "Patient", "name": [ { "family": "Smith", "given": ["John"] } ] } ### 提取返回的患者ID @patientId = {{createPatient.response.body.$.id}} - 补全语法错误:确保提取语句的括号闭合,正确格式是
@patientId = {{createPatient.response.body.$.id}},缺失的闭合括号会导致工具无法正确识别提取规则,甚至把错误内容传入请求。 - 正确引用变量:后续请求要使用
patientId时,在URL或请求参数里用{{patientId}}即可,不要混入JSON正文。比如查询这个患者的请求:GET {{fhirBaseUrl}}/Patient/{{patientId}} Content-Type: application/fhir+json
核心提醒
REST Client的变量定义是工具专属语法,和FHIR资源本身无关,绝对不能放到请求的JSON资源内容里,FHIR服务器只接受符合规范的资源格式,任何额外的非规范字符都会触发解析失败。
内容的提问来源于stack exchange,提问作者One Developer
相关产品推荐
相关产品推荐

