问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c#读取json

发布网友 发布时间:2022-04-22 23:41

我来回答

1个回答

热心网友 时间:2023-10-07 08:11

先声明,以下两个方法我一直用
肯定没有问题

TXT读取方法

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

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

private void Form1_Load(object sender, EventArgs e)
{

this.rT1.Text = "";
FileStream fs1 = new FileStream("2.txt", FileMode.Open);

StreamReader sr = new StreamReader(fs1);
string str1 = sr.ReadToEnd();
this.rT1.Text = str1;
sr.Close();
fs1.Close();
}

}
}

----------------------------------------------------------------------------------

以下是 json的 序列化和反序列化
.net3.5提供了json对象序列化与反序列化的类。位置在:System.Runtime.Serialization.Json空间下。其中如果要应用这个空间还必须添加对
System.ServiceModel
System.ServiceModel.Web
这两个库文件的引用。
参考实体类:Customer
public class Customer
{
public int Unid { get; set; }
public string CustomerName { get; set; }
}

DataContractJsonSerializer
将对象序列化为 JavaScript 对象表示法 (JSON),并将 JSON 数据反序列化为对象。无法继承此类。
其中有个方法WriteObject,它的功能定义为:将对象序列化为 JavaScript 对象表示法 (JSON) 文档
它有三个方法重载,其中一个为:
public override void WriteObject(Stream stream,Object graph)

它的功能描述这:将指定对象序列化为 JavaScript 对象表示法 (JSON) 数据,并将生成的 JSON 写入流中
(一)序列化
public string ToJson(Customer customer)
{

DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(Customer));
MemoryStream ms=new MemoryStream();

ds.WriteObject(ms, customer);

string strReturn=Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return strReturn;
}

创建类实例,通过它的WriteObject方法来向流写入序列化的对象,再把流写入到字符串中。就可以得到JSON对象。
测试一下:
Customer cc = new Customer {Unid=1,CustomerName="John" };
string strJson = ToJson(cc);

Console.WriteLine(strJson);

结果为:{"CustomerName":"John","Unid":1}
(二)反序列化
ReadObject方法,其描述为:反序列化 JSON(JavaScript 对象表示法)数据,并返回反序列化的对象。
它有很多重载,现在通过一种:
public override Object ReadObject(Stream stream)
它从流中得到反序列化的对象。
public object FromJson(string strJson)
{
DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(Customer));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJson));

return ds.ReadObject(ms);
}

测试:
string strJson="{\"CustomerName\":\"John\",\"Unid\":1}";
Customer c=FromJson(strJson) as Customer;

Console.WriteLine(c.Unid+" "+c.CustomerName);

(三)通过泛型方法对两者进行修改
为了适应多类型实例的序列化与反序列化,通过泛型方法来实现。
public string ToJson<T>(T t)
{
DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream();
ds.WriteObject(ms, t);

string strReturn = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return strReturn;
}

public T FromJson<T>(string strJson) where T:class
{
DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJson));

return ds.ReadObject(ms) as T;
}

•反序列化时通过泛型约束来指定类型T为类类型。
测试:
Customer cc = new Customer {Unid=1,CustomerName="John" };
string strJsons = ToJson<Customer>(cc);
Console.WriteLine(strJsons);

string strJson="{\"CustomerName\":\"John\",\"Unid\":1}";
Customer c = FromJson<Customer>(strJson);
Console.WriteLine(c.Unid+" "+c.CustomerName);
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么网页突然自动关闭 网页为什么会突然自动关闭 网页自动关闭什么原因 怎么在微信里面自己组建群聊 门开在东南角,北面中间有窗,办公桌如何摆放 请推荐一款app导航系统,地图信息准确,界面友好,主要用于在境外... 急求一款app导航系统,地图信息准确,界面别太多杂乱的东西,主要用在境外... 欠了闪银3600,逾期125天,今天算了下,差不多要还6000,不还会怎么样?_百 ... 怎么进出口货物老被查验,难道被盯上了?海关是如何查验的,海关查验... 来料加工海关会查什么 外贸知识:海关查验详解 DELPHi分布式多层设计,的瘦客户机的理解 python threads can only be started once 为什么在解析json中汉字解析不了 如何用python方法检测UDP端口 javascript 解析json数据的问题 Python socket 如何实现广播单播切换 json s数据能传给异步任务吗 android python 多进程通讯 使用什么好 js怎么获取json数据里重复的值? js中for遍历出了多个json,如何把这些json存到数组? 有3个文件1.txt 2.txt 3.txt 我想利用python多线程同时查看3个文件的... json的简单介绍及基本使用 关于python多线程的一些问题。 暑期社会实践证明 一个for循环的Python脚本程序中如何加入多进程(并发进程)呢,急急急... 本人现急需一份参加社会实践活动的证明 请教一个关于python socket的问题 急!急!急!暑期社会实践证明… python编程中线程结束的问题 中学生社会实践证明有什么格式么~? linux下vyysh命令有什么作用啊?经常见到! json对象获取属性名 python 多线程如何延时 json数据格式,xml数据格式的区别和用法 referenceerror lessonjsons啥意思 新下的EVE 和新注册的账号,怎么不能用! 如何把一串字符串再解析成json javascript解析json问题 javascript解析多维数组生成的json 为什么某些浏览器无法获取JSON? springmvc怎么接受前台传进来的json数据 js将字符串转换成对象和数组 struts2返回json数据问题 为什么某些浏览器用JSON无法传递中文参数? 怎样在官网上查商品真假? 不记得在哪个平台买的物品怎么查购买的商品忘了是从哪个平台买的了怎么查? 怎么查一件商品是不是正品? 怎样查产品的真假? 如何查找抖音上的热销商品呢? 用一个订单编号怎么查商品,不是自己的在淘宝上面买的?