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

如何对JSON字符串执行投影?如何查询JSON提取指定属性?

针对你提出的两个JSON操作问题(执行投影操作、查询选择特定属性),结合你给出的C#场景,我给你整理了几种实用的解决办法,帮你提取出目标的count属性数组:

方法1:使用Newtonsoft.Json(Json.NET)

这是.NET生态里非常常用的JSON处理库,灵活性很高。如果还没安装,直接在NuGet包管理器中搜索Newtonsoft.Json安装即可。

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Linq;

// 你的原始JSON字符串
string JsonObj = Converter.ConvertDataTabletoString(DT);

// 解析JSON为JArray
JArray jsonArray = JArray.Parse(JsonObj);
// 提取每个对象的count属性,转换为double列表
var countValues = jsonArray.Select(item => (double)item["count"]).ToList();
// 序列化为你需要的JSON格式字符串
string resultJson = JsonConvert.SerializeObject(countValues);
// 输出结果就是 "[21.23,11.93,8.49]"
方法2:使用System.Text.Json(.NET Core 3.0+ 内置)

如果你的项目是.NET Core 3.0及以上版本,或者是.NET 5+,可以直接用内置的System.Text.Json,无需额外安装第三方库:

using System.Text.Json;
using System.Linq;

// 原始JSON字符串
string JsonObj = Converter.ConvertDataTabletoString(DT);

// 解析JSON文档
using var jsonDoc = JsonDocument.Parse(JsonObj);
// 遍历数组提取count属性值
var countValues = jsonDoc.RootElement.EnumerateArray()
                       .Select(element => element.GetProperty("count").GetDouble())
                       .ToList();
// 序列化为目标JSON字符串
string resultJson = JsonSerializer.Serialize(countValues);
方法3:直接在DataTable阶段处理(更高效)

既然你的JSON是从DataTable转换来的,其实完全可以跳过JSON转换的步骤,直接从DataTable中提取count值,这样能节省JSON解析和序列化的开销,性能更好:

using System.Linq;
using System.Data;

// 假设你的原始DataTable是DT
var countValues = DT.AsEnumerable()
                  .Select(row => row.Field<double>("count"))
                  .ToList();
// 再转换为你需要的JSON字符串
string resultJson = JsonConvert.SerializeObject(countValues); // 或者用System.Text.Json.JsonSerializer.Serialize

简单来说,JSON的投影操作就是从复杂的JSON结构中筛选出你需要的特定字段,这里我们就是把数组中每个对象的count值单独提取出来,组成一个新的数值数组,正好满足你的需求。

内容的提问来源于stack exchange,提问作者Anyname Donotcare

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:12:00