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

无法从REST GET请求的JsonArray中读取name字段值,求解决方法

修正方案

1. 修正实体类与反序列化逻辑

你的API返回的是直接的对象数组,不存在外层MyArray嵌套结构,因此不需要定义Root类,直接用对应实体类反序列化即可:

using Newtonsoft.Json;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        // myJsonResponse为API返回的JSON字符串
        var tagList = JsonConvert.DeserializeObject<List<DeviceTag>>(myJsonResponse);
        
        // 获取第一个元素的name值
        if (tagList != null && tagList.Count > 0)
        {
            string targetName = tagList[0].Name;
            // 遍历所有元素的name
            foreach (var tag in tagList)
            {
                System.Console.WriteLine(tag.Name);
            }
        }
    }
}

// 类名建议贴合业务场景,按需添加需要的字段
public class DeviceTag
{
    [JsonProperty("id")]
    public string Id { get; set; }

    [JsonProperty("name")]
    public string Name { get; set; }

    // 如需其他字段,直接添加对应属性即可,示例:
    [JsonProperty("type")]
    public string Type { get; set; }
}

2. 无需实体类的简化访问方法

如果只是临时获取name字段,不想定义实体类,可以用以下两种方式:

方法一:使用dynamic动态类型

using Newtonsoft.Json;

public class Program
{
    public static void Main()
    {
        dynamic tagArray = JsonConvert.DeserializeObject(myJsonResponse);
        string firstTagName = tagArray[0].name;
        
        // 遍历所有name
        foreach (var tag in tagArray)
        {
            System.Console.WriteLine(tag.name);
        }
    }
}

方法二:使用JArray解析(Newtonsoft.Json.Linq)

using Newtonsoft.Json.Linq;

public class Program
{
    public static void Main()
    {
        JArray tagArray = JArray.Parse(myJsonResponse);
        string firstTagName = tagArray[0]["name"].ToString();
        
        // 遍历所有name
        foreach (JObject tag in tagArray)
        {
            System.Console.WriteLine(tag["name"].ToString());
        }
    }
}

错误原因说明

你之前定义的Root类额外增加了MyArray嵌套字段,但实际API返回的JSON没有这一层结构,导致反序列化后的对象无法正确映射数据,自然无法访问name字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 20:00:03