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

C#中如何提取指定Name值对应的JSON对象数据

解决方案

首先注意:你提供的示例JSON格式不合法,两个对象直接用逗号分隔无法正确解析,需要用数组[]包裹,修正后的合法格式如下:

[
    {
        "Name": "Joe",
        "gender": "man",
        "address": "123"
    },
    {
        "Name": "Rack",
        "gender": "man",
        "address": "456"
    }
]

以下提供两种实现方式:

方式一:强类型反序列化+过滤

1. 定义实体类

先创建与JSON结构匹配的实体类:

public class Person
{
    public string Name { get; set; }
    public string gender { get; set; }
    public string address { get; set; }
}

如果你的JSON有根对象(比如外层是{"data": [数组内容]}),则需要定义RootObject类:

public class RootObject
{
    public List<Person> data { get; set; } // 属性名需和JSON中的键完全一致
}

2. 过滤逻辑

  • 若JSON是纯数组:
var peopleList = JsonConvert.DeserializeObject<List<Person>>(jsonString);
var joeData = peopleList.FirstOrDefault(p => p.Name == "Joe");
// joeData即为Name=Joe的对象,无匹配时返回null
  • 若JSON有根对象:
var rootInstance = JsonConvert.DeserializeObject<RootObject>(jsonString);
var joeData = rootInstance.data.FirstOrDefault(p => p.Name == "Joe");

方式二:动态解析(无需定义实体类)

如果不想创建实体类,可直接用Newtonsoft.Json的JArray动态处理:

var jArray = JArray.Parse(jsonString);
var joeObject = jArray.FirstOrDefault(item => item["Name"]?.ToString() == "Joe");
// 可直接取值或转成JSON字符串
string joeGender = joeObject?["gender"]?.ToString();
string joeJson = joeObject?.ToString();

注意事项

  • 加入空值判断(比如?.操作符)避免空引用异常
  • 确保JSON格式合法,否则会抛出解析异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:48:22