如何在Azure API Management中使用set-body修改JSON负载
问题原因
- 修改逻辑完全错位:你读取了原始响应体到
inBody后,直接把未修改的原始内容转成字符串存到了str变量,后续新建的item对象和原始响应体没有任何关联,最后返回的还是原始的str,所以出站负载没有变化 - 硬编码的JSON字符串存在语法错误:
{ 'link': 'http://localhost:7071/api}缺少单引号闭合,会触发JSON解析异常
正确实现代码
场景1:直接替换link为自定义值(不校验原值)
不管原link字段的取值是什么,直接覆盖为你指定的内容,代码如下:
JObject inBody = context.Response.Body.As<JObject>(); // 替换为你需要的自定义链接,需要置空就写 inBody["link"] = "" inBody["link"] = "https://randomlink/269"; return inBody.ToString();
场景2:仅原值匹配时才替换
只有原link字段值为http://localhost:7071/api时才执行替换,代码如下:
JObject inBody = context.Response.Body.As<JObject>(); if (inBody["link"]?.ToString() == "http://localhost:7071/api") { // 需要置空就写 inBody["link"] = "" inBody["link"] = "https://randomlink/269"; } return inBody.ToString();
内容的提问来源于stack exchange,提问作者Aadhar
相关产品推荐
相关产品推荐

