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

如何在Azure Functions中使用C#为现有JSON对象添加属性?

修改Azure Function代码为ServiceBus队列属性添加自定义属性

没问题,我来帮你搞定这个需求!你当前的代码只是将请求中的JSON内容原封不动返回,要给目标JSON对象添加MyProperty属性,我们需要先解析输入的JSON结构,完成属性添加后再重新序列化返回。

具体修改步骤:

  1. 首先引入Newtonsoft.Json.Linq命名空间,方便我们灵活操作JSON对象;
  2. 解析输入的JSON数组(你的输入是一个包含JSON字符串的数组结构);
  3. 将数组中的JSON字符串转换为可编辑的JObject;
  4. 给JObject添加自定义属性;
  5. 把修改后的JObject转回字符串,替换数组中的原元素;
  6. 最终将修改后的数组序列化为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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:02:08