C# Azure Function对接Snowflake如何转换JSON为指定嵌套数组格式
C# 实现JSON格式转换适配Snowflake响应要求
实现方案
下面分两种常用的JSON处理库给出可直接运行的代码:
方案1:使用.NET 内置的System.Text.Json(适用于.NET Core 3.0+ / .NET 5+ 版本)
无需额外安装NuGet包,直接使用原生API即可完成转换:
using System.Text.Json; using System.Collections.Generic; // 这里替换为你现有接口返回的原始JSON字符串 string originalJson = "{\"access_token\": \"access token value here\" , \"user\": \"user_val\"}"; // 解析原始JSON using JsonDocument originalDoc = JsonDocument.Parse(originalJson); JsonElement originalData = originalDoc.RootElement; // 构造Snowflake要求的结构 var responseObj = new { data = new List<object[]> { new object[] { 0, originalData } } }; // 序列化为最终输出的JSON,WriteIndented控制格式化输出,生产环境可设为false减小体积 string finalJson = JsonSerializer.Serialize(responseObj, new JsonSerializerOptions { WriteIndented = true });
方案2:使用Newtonsoft.Json(Json.NET,适用于所有.NET版本)
如果你的项目用的是旧版.NET Framework,或者已经依赖了Newtonsoft.Json,可使用该方案:
using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Collections.Generic; // 这里替换为你现有接口返回的原始JSON字符串 string originalJson = "{\"access_token\": \"access token value here\" , \"user\": \"user_val\"}"; // 解析原始JSON JObject originalData = JObject.Parse(originalJson); // 构造Snowflake要求的结构 var responseObj = new { data = new JArray { new JArray(0, originalData) } }; // 序列化为最终输出的JSON string finalJson = JsonConvert.SerializeObject(responseObj, Formatting.Indented);
补充说明
- 如果你的现有接口返回的是强类型对象,不需要先转成JSON字符串再解析,直接把对象填入数组的第二个位置即可,性能更高。例如你有个
TokenResponse类对应原始返回结构,直接写new object[] {0, 你的TokenResponse实例}即可。 - 如果你需要返回多行数据,只需往
data数组中按顺序添加元素即可,行号从0开始依次累加。
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

