如何将C#/.NET 将json字符串格式数据转换成对象?
引用 Newtonsoft.Json.dll
1、json字符串
string xxx = "{\"count\":\"1\",\"Product_Code\":\"14003949\",\"Product_Name\":\"聚丙烯树脂\",\"Product_Batch\":\"20140228D8103\",\"Certification_Code\":\"SCSH20140226-001-01\",\"Plate_Code\":\"L5E-89\",\"Grade\":\"合格品\",\"WarehouseIn_Num\":\"19120.0000000\",\"WarehouseIn_Weight\":\"478.000\",\"WarehouseIn_Confirm_Date\":\"2014-03-01\"}";
则直接转换为对象:
M_WarehouseInResult whh = JsonConvert.DeserializeObject<M_WarehouseInResult>(xxx);
2、如果为json数组(注意:最外是中括号)
string xxx = "[{\"count\":\"1\",\"Product_Code\":\"14003949\",\"Product_Name\":\"聚丙烯树脂\",\"Product_Batch\":\"20140228D8103\",\"Certification_Code\":\"SCSH20140226-001-01\",\"Plate_Code\":\"L5E-89\",\"Grade\":\"合格品\",\"WarehouseIn_Num\":\"19120.0000000\",\"WarehouseIn_Weight\":\"478.000\",\"WarehouseIn_Confirm_Date\":\"2014-03-01\"}]";
json数组转换为list
List<M_WarehouseInResult> whh = JsonConvert.DeserializeObject<List<M_WarehouseInResult>>(xxx);
附:
public class M_WarehouseInResult
{
public string count { get; set; }
public string Product_Code { get; set; }
public string Product_Name { get; set; }
public string Product_Batch { get; set; }
public string Certification_Code { get; set; }
public string Plate_Code { get; set; }
public string Grade { get; set; }
public string WarehouseIn_Num { get; set; }
public string WarehouseIn_Weight { get; set; }
public string WarehouseIn_Confirm_Date { get; set; }
}
首先你要按JSON的结构定义一个类,类中的变量要用属性的形式.
也就是public String XX{get;set;}这样.
然后可以参考我下面的代码,是在.NET 4.6下面写的,好像3.5和4.0要用另一个类.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Web;
namespace XXX
{
public class clsJson
{
public static T Deserialize<T>(String s) where T : class
{
DataContractJsonSerializer dataContractJsonSerializer = new
DataContractJsonSerializer(typeof(T));
MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(s));
return dataContractJsonSerializer.ReadObject(memoryStream) as T;
}
public static String Serialize<T>(T t) where T : class
{
DataContractJsonSerializer dataContractJsonSerializer = new
DataContractJsonSerializer(typeof(T));
MemoryStream memoryStream = new MemoryStream();
dataContractJsonSerializer.WriteObject(memoryStream, t);
return Encoding.UTF8.GetString(memoryStream.ToArray(), 0,
Convert.ToInt32(memoryStream.Length));
}
}
}
json作为作为一种最常用的数据,应用很广泛,在.net中如何把一个对象转化为json字符串呢?
主要有一下几种
1按照json的定义自己转化,难度很大,但很灵活。需要自己处理各种特殊字符,各种数据类型
2使用开源的类库Newtonsoft.Json
3使用JavaScriptSerializer类
4使用System.Runtime.Serialization.dll提供的DataContractJsonSerializer或者 JsonReaderWriterFactory实现。
1按照json的定义自己转化,难度很大,但很灵活。需要自己处理各种特殊字符,各种数据类型
要写成通用的核心就是使用反射。
2使用开源的类库Newtonsoft.Json,很方便,.net的各个版本都有。
/// <summary>
/// 对象转为json
/// </summary>
/// <typeparam name="ObjType"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static string ObjToJsonString<ObjType>(ObjType obj) where ObjType : class
{
string s = JsonConvert.SerializeObject(obj);
return s;
}
/// <summary>
/// json转为对象
/// </summary>
/// <typeparam name="ObjType"></typeparam>
/// <param name="JsonString"></param>
/// <returns></returns>
public static ObjType JsonStringToObj<ObjType>(string JsonString) where ObjType : class
{
ObjType s = JsonConvert.DeserializeObject<ObjType>(JsonString);
return s;
}
3JavaScriptSerializer类 ,使用.NET Framework 3.5/4.0中提供的System.Web.Script.Serialization命名空间下的JavaScriptSerializer类进行对象的序列化与反序列化。需要添加程序集System.Web.Extensions.dll。
/// <summary>
/// 对象转为json
/// </summary>
/// <typeparam name="ObjType"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static string ObjToJsonString<ObjType>(ObjType obj) where ObjType : class
{
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
string s = jsonSerializer.Serialize(obj);
return s;
}
/// <summary>
/// json转为对象
/// </summary>
/// <typeparam name="ObjType"></typeparam>
/// <param name="JsonString"></param>
/// <returns></returns>
public static ObjType JsonStringToObj<ObjType>(string JsonString) where ObjType : class
{
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
ObjType s = jsonSerializer.Deserialize<ObjType>(JsonString);
return s;
}
4使用System.Runtime.Serialization.dll提供的DataContractJsonSerializer或者 JsonReaderWriterFactory实现。
具体可参考
阅读全文
1 0
上一篇 下一篇
暂无评论,我去发表~
C# 中对象与Json互转的方法整理笔记
 xymaco 2014-09-05 19:13 10474
最新C# Object与json互转
 chenjiazhu 2016-07-20 20:19 10494
C# JSON串和对象互相转换
 jn1705 2011-06-22 15:30 13791
C# json字符串转为对象及JavaScriptSerializer:
 ma15732625261 2016-08-07 17:56 1346
C# .Net 将Json转成.Net对象
 voodooer 2012-12-27 09:39 8481
使用FastJSON,将对象或数组和JSON串互转
 gaojinshan 2014-06-12 16:42 184270
如何将C#/.NET 将json字符串格式数据转换成对象
 killcwd 2015-03-27 11:13 2384
JSON.NET框架实现C#对象和JSON字符串的转换
 ful1021 2014-08-18 11:04 1658
 未登录
•首页
•人工智能
•移动开发
•物联网
•架构
•云计算/大数据
•互联网
•游戏开发
•运维
•数据库
•前端
•后端
•编程语言
•研发管理
•安全
•程序人生
•区块链
•音视频开发
•资讯
•计算机理论与基础
•综合