.net 中 Json数据转实体类,实体类转Json

news/2025/3/17 10:04:05/

1.获取一个页面的json值,转换为实体类

public static void GetPurchaseMatPriceLogList()

        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("www.json.com");
            request.Timeout = 5000;
            request.Method = "GET";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Console.WriteLine("内容类型:" + response.ContentType);
            Console.WriteLine("内容长度:" + response.ContentLength);
            Console.WriteLine("服务器名:" + response.Server);
            Console.WriteLine("资源的URI:" + response.ResponseUri);
            Console.WriteLine("HTTP协议版本:" + response.ProtocolVersion);
            Console.WriteLine("相应状态:" + response.StatusCode);
            Console.WriteLine("相应方法:" + response.Method);
            //头信息
            for (int i = 0; i < response.Headers.Count; ++i)
            {
                Console.WriteLine("\nHeader Name:{0},----------Value:{1}", response.Headers.Keys[i], response.Headers[i]);
            }


            StreamReader sr = new StreamReader(response.GetResponseStream());
            string jsonstr = sr.ReadToEnd();  //这是获取到的Json字符串
            //开始转换
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<PurchaseMatPriceLogList>));
            //jsonstr = "[" + jsonstr + "]";
            MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonstr));
            object ob = serializer.ReadObject(stream);
            List<PurchaseMatPriceLogList> ls = (List<PurchaseMatPriceLogList>)ob;
            if (ls == null)
            {
                throw new ArgumentNullException("未获取到最新的数据");
            }


            //判断每一条数据是不是当天,如果是就更新,不是就添加
            foreach (PurchaseMatPriceLogList pl in ls)
            {
                //暂时只处理板材
                if (pl.metel_type_title == "不锈钢板" || pl.metel_type_title == "碳钢板材")
                {
                    PurchaseMatPriceLogApp.AddIUDPurchaseMatPriceLog(pl);
                }
            }

        }


2.将实体类中的值转换为json

  1. public string getJsonInfo()  
  2.         {  
  3.             UserInfo userInfo = new UserInfo();  
  4.             //userInfo.strNameInfo = "张三";  
  5.             //userInfo.intAgeInfo = 23;  
  6.             //userInfo.intTelInfo = 66666;  
  7.             //userInfo.strAddrInfo = "北京市";  
  8.             //userInfo.strPasswordInfo = "yhx.123";  
  9.             userInfo.strName = "张三";  
  10.             userInfo.intAge = 23;  
  11.             userInfo.strPsd = "yhx.123";  
  12.             userInfo.intTel = 2324;  
  13.             userInfo.strAddr = "北京市";  
  14.             //将对象序列化json  
  15.             DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(UserInfo));  
  16.             //创建存储区为内存流  
  17.             System.IO.MemoryStream ms = new MemoryStream();  
  18.             //将json字符串写入内存流中  
  19.             serializer.WriteObject(ms, userInfo);  
  20.             System.IO.StreamReader reader = new StreamReader(ms);  
  21.             ms.Position = 0;  
  22.             string strRes = reader.ReadToEnd();  
  23.             reader.Close();  
  24.             ms.Close();  
  25.             return strRes;  
  26.         }  
  27.   
  28.         /// <summary>  
  29.         /// 将json数据转换成实体类     
  30.         /// </summary>  
  31.         /// <returns></returns>  
  32.         private static List<UserInfo> getObjectByJson(string jsonString)  
  33.         {  
  34.             // 实例化DataContractJsonSerializer对象,需要待序列化的对象类型  
  35.             DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<UserInfo>));  
  36.             //把Json传入内存流中保存  
  37.             jsonString = "[" + jsonString + "]";  
  38.             MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));  
  39.             // 使用ReadObject方法反序列化成对象  
  40.             object ob = serializer.ReadObject(stream);  
  41.             List<UserInfo> ls = (List<UserInfo>)ob;  
  42.             return ls;  
  43.         }  
  1. /// <summary>  
  2.         /// 在页面上显示转换为实体类数据  
  3.         /// </summary>  
  4.         private string  disJsonInfo(List<UserInfo> us)  
  5.         {  
  6.             string strItem = "";  
  7.             foreach(var item in us )  
  8.             {  
  9.                 strItem += item.strName + ":" + item.strPsd + ":" + item.intAge + ":" + item.intTel + ":" + item.strAddr + "<br/>";  
  10.             }  
  11.             return strItem;  
  12.         }  



http://www.ppmy.cn/news/886001.html

相关文章

iOS 11:机器学习人人有份

Core ML 原文地址&#xff1a;iOS 11: Machine Learning for everyone原文作者&#xff1a;Matthijs Hollemans译文出自&#xff1a;掘金翻译计划译者&#xff1a;Changkun Ou校对者&#xff1a;wilsonandusa atuooo 本文同步发布于公众号&#xff1a;AIMaster。在这里&#xf…

[译] iOS 11:机器学习人人有份

本文讲的是[译] iOS 11&#xff1a;机器学习人人有份&#xff0c; 原文地址&#xff1a;iOS 11: Machine Learning for everyone 原文作者&#xff1a;Matthijs Hollemans 译文出自&#xff1a;掘金翻译计划 译者&#xff1a;Changkun Ou 校对者&#xff1a;wilsonandusa atuoo…

【QT项目】实现设置参数,并且开机后,仍然显示上次实验数据

1&#xff1a;UI界面设计 2&#xff1a;参数设计.h文件 里面声明变量&#xff08;你的参数&#xff09;&#xff0c;用到的函数等等 float width; //宽度float thickness; //厚度float radius; …

[实战笔记]Android文本编辑的一些实用技巧

有一段时间忙碌了&#xff0c;今天就好好总结记录一下这阵子学到的一些小技巧好了。这一篇先记录一下关于文本编辑的小事儿&#xff0c;Here we go&#xff01; ************************************************ 一、插入符号 现在做的项目由于是多语言的&#xff0c;加上…

C语言socket编程一socket之Winsock API

参考网址&#xff1a;https://blog.csdn.net/Datura_Metel/article/details/79900395 https://www.2cto.com/kf/201804/736240.html https://blog.csdn.net/m0_37947204/article/details/80489431 https://blog.csdn.net/jinmie0193/article/details/78951055 哈工大相关课程pp…

[转] 【卡饭首发】卡巴斯基2016年Q1威胁演化报告

目录 0x01 第一季度的数据 0x02 重大安全事件概述 Ⅰ有目标性的攻击 ①BlackEnergy2/3 ②Poseidon ③Hacking Team ④Operation BLOCKBASTER ⑤针对医院的攻击 Ⅱ网络犯罪活动 ①Adwind&#xff08;RAT) ②Banking threats银行威胁 ③FakeCERT ④Bangladesh …

接口 [java]

接口(重点) 基本概念: 接口就是一种比抽象类还要抽象的类,体现为接口中所有的成员方法都是抽象方法 定义类的关键字是class 定义接口的关键字是interface 继承的关键字是extends 实现接口的关键字是implements 注意: ​ 接口中不能定义成员变量,只能定义常量 接口中只能…

神龙X-Dragon,这技术“范儿”如何?| 问底中国IT技术演进

在CSDN总部会议室&#xff0c;阿晶首次见到了阿里云智能研究员、弹性计算技术负责人张献涛——这位不仅仅在阿里云智能内部&#xff0c;在业内也是响当当的虚拟化技术大牛。现在回想起来&#xff0c;当时聊了没两句&#xff0c;阿晶就问了这样一个问题&#xff0c;“阿里云这款…