c# 最适合你的JSON数据解析到本地TXT,简单易学。

本文提供了一种简单易懂的C# JSON数据解析方法,特别适合初学者。通过实例演示了如何使用POST和GET请求获取JSON数据,并展示了如何解析这些数据,将其存储到本地TXT文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近看了很多的C#  JSON数据解析,但是呢台通俗了,根本不适合初学者,尤其是不了解这个语言初学者,无疑是雪上加霜。下面根据我的经验给大家带来一个最简单的C# JSON数据解析。我这里用的post请求,当然了Get请求道理也是一样的。

1.首先新建一个WINForm项目,命名为Demos。

2.然后在项目中添加一个类

默类名为class.cs,把它改为HttpUtils.cs,改完以后点击添加既可。

3.然后打开我们新创建的(HttpUtils.cs)类,这个类是(POST请求)以及(GET请求) 内容替换在HttpUnits.cs中,替换完保存既可。如果引用完不好使的话或者出现报错那么肯定是你的namespace 的名字不对你只要把你的Demos改为你项目的namespace 后面的名称既可使用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;

namespace Demos
{
    public class HttpUtils
    {
        public static string Get(string Url)
        {

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            request.Proxy = null;
            request.KeepAlive = false;
            request.Method = "GET";
            request.ContentType = "application/json; charset=UTF-8";
            request.AutomaticDecompression = DecompressionMethods.GZip;

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();

            myStreamReader.Close();
            myResponseStream.Close();

            if (response != null)
            {
                response.Close();
            }
            if (request != null)
            {
                request.Abort();
            }

            return retString;
        }

        public static string Post(string Url, string Data)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            request.Method = "POST";

            byte[] bytes = Encoding.UTF8.GetBytes(Data);
            request.ContentType = "application/json";
            request.ContentLength = bytes.Length;
            Stream myResponseStream = request.GetRequestStream();
            myResponseStream.Write(bytes, 0, bytes.Length);

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();

            myStreamReader.Close();
            myResponseStream.Close();

            if (response != null)
            {
                response.Close();
            }
            if (request != null)
            {
                request.Abort();
            }
            return retString;
        }

    }
}

4.将下面两个dll文件放在你项目文件第二层的Demos文件夹中既可。

连接如下:链接: https://pan.baidu.com/s/1-PBM8yqTN2ReDR55eNrHsw 提取码: txvs

在你项目节目中的解决方案中找到(引用),然后右键点击找到添加引用,将你的文件指定到你Demos中既可
摁住Ctrl点击你的两个文件既可

5然后.开始我们真正解析了,首先大家打开这个链接 http://www.bejson.com,然后在JSON相关中,打开Json在线编译器。将最左侧的代码拷贝(直接Ctrl+A既可)。在JSON相关中打开JSON压缩转义,将我们的代码复制进去压缩并转义既可。大家记住转义完不要关闭这个网址,一会我们用到。

讲到这里的时候,配置文件都加进去了,为什么要解析别人的JSON,因为这个是针对没有URL连接的人做本地解析准备的。

 1.第一步点击项目界面最上方的视图,在视图中找到工具箱,添加一个Button按钮,然后将它Content里面的名字改为数据拉取

 2.双击你刚才创建的Button按钮,在你的Button按钮中进行代码写入,首先获取我们的URL,第一步我们获取到了URL并且把它放在了我们的Data中,Data_里面呢就是把我们拿到的JSON url通过GET给拉取到了,因为我们用HttpUtils是一个封装好的类,所以我们直接引用既可。

​string Data = "http://172.16.128.65:8040/a1/sadad/S1/char/wast";
​string Data_str = HttpUtils.Get(Data);

 3.上面就是把URL拿到了,但是很多人是本地的TXT文件,那么我们将他直接按照我们刚才的流程把json内容压缩转义既可,现在将我们刚才压缩转义好的JSON数据拷贝出来(Ctrl+A)再(Ctrl+C)。

string Data_str = "{\"name\":\"BeJson\",\"url\":\"http://www.bejson.com\",\"page\":88,\"isNonProfit\":true,\"address\":{\"street\":\"科技园路.\",\"city\":\"江苏苏州\",\"country\":\"中国\"},\"links\":[{\"name\":\"Google\",\"url\":\"http://www.google.com\"},{\"name\":\"Baidu\",\"url\":\"http://www.baidu.com\"},{\"name\":\"SoSo\",\"url\":\"http://www.SoSo.com\"}]}";
JObject Data_new = (JObject)JsonConvert.DeserializeObject(Data_str);
JArray JSON = JArray.Parse(Data_new["links"].ToString());

4.上面呢我们就是把本地的JSON数据做了一个解析,首先我们把JSON数据放在了Data_str中,在有URL的时候它直接等于HttpUtils.Get里面的内容就可以了。在拿到这条数据以后第一步我们做了一个Object的转换,因为我们的JSON数据是一个对象里面,第二步我们又做了Jarray转换到了我们的links中,links在我们这是一个数组。

5.然后我们在D盘根目录新建一个Route的文件夹,在项目中也定义一下,顺便新建出我们的TXT文档,代码如下。

static string Path = "D:\\Route\\";

 Path代表我们的Route文件夹路径

string SelectedPath = null;
string newTxtPath = SelectedPath + Path + "Demos_Data.txt";                   //创建txt文件
StreamWriter json_Data = new StreamWriter(newTxtPath, false, Encoding.Default);   //实例化StreamWriter

6.定义一个SelectedPath。它加上文件的路径在加上我们TXT文件名字既可这样我们就创建了一个本地TXT文本。

接下来我们把数据解析出来,并且存入到本地TXT文本中,代码如下:

foreach (JObject Analysis1 in JSON)
    {
                
      json_Data.WriteLine("==================================================" + "\r");
      json_Data.WriteLine(Analysis1["name"].ToString() + "\r");
      json_Data.WriteLine(Analysis1["url"].ToString() + "\r");
 
     }
json_Data.Flush();
json_Data.Close();

7.将我们这段代码放置在第3.下面既可。之前我们通过Object转换进入到了Json第一层,然后我们通过Jarray进入到了links数组里面。foreach循环里面呢是我们的将links数组里面可视化到TXT中。因为一些的Object,以及jarray未定义,所以我们,通过报错可以添加一下Using。详细代码如下。

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Demos
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {

        static string Path = "D:\\Route\\";

        public MainWindow()
        {

            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            //string Data = "http://172.16.128.65:8040/a1/sadad/S1/char/wast";
            // string Data_str = HttpUtils.Get(Data);

            string SelectedPath = null;
            string newTxtPath = SelectedPath + Path + "Demos_Data.txt";                   //创建txt文件
            StreamWriter json_Data = new StreamWriter(newTxtPath, false, Encoding.Default);   //实例化StreamWriter


            string Data_str = "{\"name\":\"BeJson\",\"url\":\"http://www.bejson.com\",\"page\":88,\"isNonProfit\":true,\"address\":{\"street\":\"科技园路.\",\"city\":\"江苏苏州\",\"country\":\"中国\"},\"links\":[{\"name\":\"Google\",\"url\":\"http://www.google.com\"},{\"name\":\"Baidu\",\"url\":\"http://www.baidu.com\"},{\"name\":\"SoSo\",\"url\":\"http://www.SoSo.com\"}]}";
            JObject Data_new = (JObject)JsonConvert.DeserializeObject(Data_str);
            JArray  JSON  = JArray.Parse(Data_new["links"].ToString());
            foreach (JObject Analysis1 in JSON)
            {
                json_Data.WriteLine("==================================================" + "\r");
                json_Data.WriteLine(Analysis1["name"].ToString() + "\r");
                json_Data.WriteLine(Analysis1["url"].ToString() + "\r");

            }
            json_Data.Flush();
            json_Data.Close();
        }
    }
}

以下就是解析出来的数据了,如果你还想往下解析,根据变量,以及数组解析既可。希望对大家有帮助。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值