C# json 多层嵌套读取

json格式文件
{
	"accepttime": 1600966807,
	"certificate": "",
	"completetext": "",
	"completetime": 1601010419,
	"createtime": 1600966807,
	"deleteflag": 0,
	"endtimestr": "12:00",
	"gid": 42,
	"netbarCameraList": [{
		"account": "admin",
		"address": "172.16.36.17",
		"cameraid": 21,
		"gid": 42,
		"name": "36",
		"password": "52358",
		"port": 554
	}],
	"netbarname": "36新亚网吧",
	"uniacid": 6,
	"userid": 66
}
引用
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
参考代码
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 读取外部json格式文件
            string text = File.ReadAllText(@"C:\Users\Administrator\Desktop\111.txt");
            byte[] mybyte = Encoding.UTF8.GetBytes(text);
            string aaa = Encoding.UTF8.GetString(mybyte);
            //Console.WriteLine(aaa);


            //将JSON反序列化为.NET对象。
            JObject jo1 = (JObject)JsonConvert.DeserializeObject(aaa);


            //第一层
            string name = jo1["netbarname"].ToString();
            Console.WriteLine(name);

            string netbarCameraList = jo1["netbarCameraList"].ToString();
            Console.WriteLine(netbarCameraList);


            //第二层
            string account = jo1["netbarCameraList"][0]["account"].ToString();
            Console.WriteLine(account);

            string address = jo1["netbarCameraList"][0]["address"].ToString();
            Console.WriteLine(address);

        }
    }
}

json类
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace openCap
{
    public class EasyJson
    {
        private JObject job;


        /// <summary>
        /// 实例初始化
        /// </summary>
        /// <param name="JosnTxt"></param>
        public EasyJson(string JosnTxt)
        {
            job = (JObject)JsonConvert.DeserializeObject(JosnTxt);
        }

        /// <summary>
        /// 读取json首层字段值
        /// </summary>
        /// <param name="key">首层字段</param>
        /// <returns></returns>
        public string GetJsonObject(string key)
        {
            string jsonInfo = string.Empty;

            try
            {
                jsonInfo = job[key].ToString();
            }
            catch (Exception)
            {

            }
            return jsonInfo;
        }

        /// <summary>
        /// 读取json二层字段值(二层对象形式)
        /// </summary>
        /// <param name="key"></param>
        /// <param name="key1"></param>
        /// <returns></returns>
        public string GetJsonObject2(string key, string key1)
        {
            string jsonInfo = string.Empty;
            try
            {
                jsonInfo = job[key][key1].ToString();
            }
            catch (Exception)
            {
            }
            return jsonInfo;
        }

        /// <summary>
        /// 读取json二层字段值(二层数组形式)
        /// </summary>
        /// <param name="key">首层字段</param>
        /// <param name="key1">二层字段</param>
        /// <param name="num">二层数组值(默认为0)</param>
        /// <returns></returns>
        public string GetJsonArray(string key, string key1, int num = 0)
        {
            string jsonInfo = string.Empty;
            try
            {
                jsonInfo = job[key][num][key1].ToString();
            }
            catch (Exception)
            {
            }
            return jsonInfo;
        }
    }
}

应用
// 读取外部json格式文件
string text = File.ReadAllText(@"C:\Users\Administrator\Desktop\111.txt");
byte[] mybyte = Encoding.UTF8.GetBytes(text);
string aaa = Encoding.UTF8.GetString(mybyte);


EasyJson myjson = new EasyJson(aaa);

string a = myjson.GetJsonObject("netbarname");
Console.WriteLine(a);
MessageBox.Show("a=" + a);

string b = myjson.GetJsonObject2("tCameraList", "address1");
Console.WriteLine(b);
MessageBox.Show("b=" + b);

string c = myjson.GetJsonArray("netbarCameraList", "address");
Console.WriteLine(c);
MessageBox.Show("c=" + c);
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嗨!对于C#中的JSON解析,你可以使用Newtonsoft.Json库来处理嵌套JSON数据。下面是一个简单的示例: 首先,你需要在项目中安装Newtonsoft.Json库。你可以通过NuGet包管理器或手动下载并引用该库。 接下来,在你的代码中,你需要导入Newtonsoft.Json命名空间: ```csharp using Newtonsoft.Json; ``` 然后,你可以使用JsonConvert.DeserializeObject方法来解析JSON字符串。这个方法将JSON字符串转换为C#对象。假设你有以下JSON字符串: ```json { "name": "John", "age": 30, "address": { "street": "123 Main St", "city": "New York" } } ``` 你可以定义一个对应的C#类来表示JSON数据的结构: ```csharp public class Address { public string Street { get; set; } public string City { get; set; } } public class Person { public string Name { get; set; } public int Age { get; set; } public Address Address { get; set; } } ``` 然后,你可以使用以下代码来解析JSON字符串并访问嵌套的属性: ```csharp string json = @"{ ""name"": ""John"", ""age"": 30, ""address"": { ""street"": ""123 Main St"", ""city"": ""New York"" } }"; Person person = JsonConvert.DeserializeObject<Person>(json); Console.WriteLine(person.Name); // 输出: John Console.WriteLine(person.Age); // 输出: 30 Console.WriteLine(person.Address.Street); // 输出: 123 Main St Console.WriteLine(person.Address.City); // 输出: New York ``` 这样,你就可以通过嵌套属性的方式访问JSON数据中的值。 希望这能帮到你!如有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值