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

如何在C# WinForm中用JSON.Net解析嵌套JSON字符串并提取指定值

用JSON.Net解析嵌套JSON到独立变量的实现(C# WinForms)

没问题,用JSON.Net(Newtonsoft.Json)来处理这个混合类型的嵌套JSON完全可行,我给你两种常用的实现方式,按需选择:

第一步:先安装JSON.Net包

首先得确保你的项目里已经安装了Newtonsoft.Json,可以通过NuGet包管理器安装:

  • 右键项目 → 管理NuGet程序包
  • 搜索Newtonsoft.Json并安装

方式一:用动态类型(快速实现,适合简单场景)

这种方式不需要提前定义类,直接动态解析,代码简洁:

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

// 注意:原JSON的单引号要换成标准双引号,或者先替换处理
string jsonDemo = @"{""status"":""OK"",""articles"":[{""key1"":""value""},""Maqbool""]}";
// 如果原字符串是单引号格式,先做替换:jsonDemo = jsonDemo.Replace("'", "\"");

// 解析JSON
dynamic jsonObj = JsonConvert.DeserializeObject<dynamic>(jsonDemo);

// 提取status到独立变量
string status = jsonObj.status;

// 处理articles数组(混合类型:对象+字符串)
JArray articlesArray = jsonObj.articles;

// 提取key1的值
string key1Value = articlesArray[0].key1;

// 提取articles里的字符串项
string articleStringItem = articlesArray[1].ToString();

// 现在你就可以用这三个变量status、key1Value、articleStringItem了

方式二:用强类型类(更规范,适合大型项目)

如果你的项目需要更严谨的类型检查,建议定义对应的数据类来解析:

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

// 定义对应的实体类
public class ArticleObject
{
    public string key1 { get; set; }
}

public class RootJson
{
    public string status { get; set; }
    public JArray articles { get; set; } // 因为是混合类型数组,用JArray接收
}

// 同样先处理JSON字符串格式
string jsonDemo = @"{""status"":""OK"",""articles"":[{""key1"":""value""},""Maqbool""]}";

// 解析到强类型对象
RootJson rootObj = JsonConvert.DeserializeObject<RootJson>(jsonDemo);

// 提取各个变量
string status = rootObj.status;
ArticleObject firstArticle = rootObj.articles[0].ToObject<ArticleObject>();
string key1Value = firstArticle.key1;
string articleStringItem = rootObj.articles[1].ToString();

注意点

  • 一定要保证JSON格式是标准的,原示例里的单引号需要替换成双引号,否则解析会报错
  • 如果articles数组的类型固定,也可以调整实体类的定义,但这里因为是混合类型,用JArray是最灵活的处理方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:47:42