如何在Azure Functions中使用C#为现有JSON对象添加属性?
修改Azure Function代码为ServiceBus队列属性添加自定义属性
没问题,我来帮你搞定这个需求!你当前的代码只是将请求中的JSON内容原封不动返回,要给目标JSON对象添加MyProperty属性,我们需要先解析输入的JSON结构,完成属性添加后再重新序列化返回。
具体修改步骤:
- 首先引入
Newtonsoft.Json.Linq命名空间,方便我们灵活操作JSON对象; - 解析输入的JSON数组(你的输入是一个包含JSON字符串的数组结构);
- 将数组中的JSON字符串转换为可编辑的
JObject; - 给
JObject添加自定义属性; - 把修改后的
JObject转回字符串,替换数组中的原元素; - 最终将修改后的数组序列化为JSON字符串返回。
修改后的完整代码:
using System.Net; using Newtonsoft.Json; using Newtonsoft.Json.Linq; // 新增命名空间,用于JSON对象操作 public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) { // 读取请求中的JSON内容 string jsonContent = await req.Content.ReadAsStringAsync(); // 解析输入为JSON数组 JArray messageArray = JArray.Parse(jsonContent); // 遍历数组中的每个元素(适配多个消息的情况) for (int i = 0; i < messageArray.Count; i++) { // 将数组中的JSON字符串解析为JObject JObject messageObj = JObject.Parse(messageArray[i].ToString()); // 添加自定义属性MyProperty,值为TEST messageObj["MyProperty"] = "TEST"; // 将修改后的JObject转回字符串,替换原数组元素 messageArray[i] = messageObj.ToString(Formatting.None); } // 返回修改后的JSON数组 return req.CreateResponse(HttpStatusCode.OK, messageArray.ToString(Formatting.None)); }
关键说明:
- 你的输入结构是数组包裹JSON字符串(而非数组直接包含JSON对象),所以必须先把数组内的字符串解析为
JObject才能修改属性; - 代码中使用
Formatting.None是为了让输出的JSON紧凑无换行,和你给出的示例格式保持一致; - 这段代码也支持数组中有多个消息的情况,会自动给每个消息都添加
MyProperty属性。
内容的提问来源于stack exchange,提问作者Neo
相关产品推荐
相关产品推荐

