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

如何从JSON对象数组中移除指定属性?代码不生效问题排查

问题原因与修正方案

你的代码没生效是因为错误地操作了JArray而非单个JObject:你调用jArray.Remove(jArray[indexNum][jProperty.Name])是尝试从数组里移除某个属性的JToken,但"name"属性是属于每个数组元素(JObject)的,不是数组的直接子元素,所以这个操作根本没触碰到目标属性。

另外循环里的indexNum逻辑完全多余,还会导致逻辑混乱。

修正后的代码

void Start()
{
    var foodlist = new List<Food>()
    {
        new() { name = "Banana", price = 3000 },
        new() { name = "Apple", price = 1000}
    };
    
    string jasonString = JsonConvert.SerializeObject(foodlist);
    JArray jArray = JArray.Parse(jasonString);

    // 直接遍历每个JObject,移除指定属性
    foreach (var jObject in jArray.Children<JObject>())
    {
        jObject.Remove("name"); // 关键:从当前JObject移除"name"属性
    }

    // 验证结果
    string jarrayString = JsonConvert.SerializeObject(jArray);
    print(jarrayString);
}

public class Food
{
    public string name;
    public int price;
}

更简洁的写法(可选)

如果不需要中间的JArray操作,甚至可以在序列化前直接处理原集合,或者用匿名类序列化:

// 直接生成不含name的匿名类集合再序列化
string result = JsonConvert.SerializeObject(
    foodlist.Select(f => new { f.price })
);
print(result);

这样输出就会是你期望的[{"price":3000},{"price":1000}]。

内容的提问来源于stack exchange,提问作者Shrimp Korokke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:25:23