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

如何用C#遍历JSON查找指定ID对应的name值?

处理嵌套JSON并查找指定ID对应的Name值

你的JSON结构是嵌套的二维数组,result字段对应一个外层数组,里面的唯一元素又是包含目标对象的内层数组。以下是两种处理方式:

基于你现有代码的后续操作

在你当前的循环中,subtoks里的第一个元素就是包含三个对象的内层数组,你可以遍历这个数组中的每个对象,判断id是否为002:

var jObj = JObject.Parse(myJson).Children();
List<JToken> toks = jObj.Children().ToList();
foreach(JToken tok in toks)
{
   List<JToken> subtoks = tok.Children().ToList();
   // 取出内层数组(subtoks[0]就是包含目标对象的数组)
   JToken innerArrayToken = subtoks[0];
   foreach(JToken itemToken in innerArrayToken.Children())
   {
       // 将JToken转为JObject,方便访问属性
       JObject itemObj = itemToken as JObject;
       if(itemObj == null) continue;
       
       // 检查id是否为002
       string itemId = itemObj["id"]?.ToString();
       if(itemId == "002")
       {
           // 获取对应的name值
           string targetName = itemObj["name"]?.ToString();
           // 这里可以根据需求返回或输出targetName
           Console.WriteLine(targetName);
           // 找到目标后可跳出循环,提升效率
           break;
       }
   }
}

更简洁的优化写法

不需要逐层遍历Children,直接通过键名和索引定位到内层数组,再用LINQ快速查找目标:

// 解析JSON字符串为JObject
var jObj = JObject.Parse(myJson);

// 定位到内层数组:先取result字段,再取外层数组的第一个元素(内层数组)
JArray innerArray = jObj["result"]?[0] as JArray;

if(innerArray != null)
{
    // 用LINQ查找第一个id为002的对象
    JToken targetItem = innerArray.FirstOrDefault(item => 
        item["id"]?.ToString() == "002");
    
    if(targetItem != null)
    {
        string targetName = targetItem["name"]?.ToString();
        // 输出或返回目标name值
        Console.WriteLine(targetName);
    }
}

额外建议

如果需要多次处理这类JSON,建议定义对应的实体类进行反序列化,代码可读性和维护性会更好:

// 定义实体类
public class Item
{
    public string id { get; set; }
    public string name { get; set; }
}

public class Root
{
    public List<List<Item>> result { get; set; }
}

// 反序列化并查找目标
var root = JsonConvert.DeserializeObject<Root>(myJson);
var targetName = root.result[0].FirstOrDefault(item => item.id == "002")?.name;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 23:03:24