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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值