您的位置:首页 > Web前端 > JavaScript

关于C#使用工具类解析JSON数据以及将类JSON化

2017-03-24 16:56 393 查看
项目中做的开发,记录下。

C#处理JSON数据还是相当方便的,System.Runtime.Serialization.Json提供了非常好用的相关方法。

首先,我们需要弄清楚需要处理的JSON的数据格式,举例如下:

{ "ret": "0", "Isupdate": "1", "Newver": "V1.1.0", "Filelist": [ { "Name": "Debug.zip", "Size": "56693419", "url": "http://localhost/AutoUpdateService/UpdateFiles/V1.0.1/Debug.zip", "Localpath": ""} ] }

我们需要根据JSON格式建立相应的class用来处理JSON,如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization;

namespace AutoUpdater_Client.Model
{
//从更新服务器返回的更新信息
[DataContract]
class UpdateInfoJSON
{
//返回值,为0表示获取信息成功
[DataMember(Order = 0)]
public int ret { get; set; }
//是否需要更新,0表示不需要,1表示需要
[DataMember(Order = 1)]
public int Isupdate { get; set; }
//最新版本号
[DataMember(Order = 2)]
public string Newver { get; set; }
//升级内容说明
[DataMember(Order = 3)]
public string Content { get; set; }
//升级文件总大小,以bps为单位
[DataMember(Order = 4)]
public long Totalsize { get; set; }
//需要下载的文件总数量
[DataMember(Order = 5)]
public int Filecount { get; set; }
//需要下载的文件列表
[DataMember(Order = 6)]
public FileList [] Filelist { get; set; }
}

//Filelist所指向的文件信息
[DataContract]
class FileList
{
//文件名称
[DataMember(Order = 0)]
public string Name { get; set; }
//文件大小
[DataMember(Order = 1)]
public long Size { get; set; }
//文件下载URL地址
[DataMember(Order = 2)]
public string url { get; set; }
//文件存储路径【在终端上的存储路径】
[DataMember(Order = 3)]
public string Localpath { get; set; }
}
}

注意,上面代码中的DataContract和DataMember不可少,否则在序列化的时候会抛出异常。

接下来编写一个处理JSON的class,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.IO;

namespace AutoUpdater_Client.JSON
{
public static class JSONOperator
{
//将JSON数据转化为对应的类型
public static T parase<T>(string JSONStr)
{
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(JSONStr)))
{
return (T)new DataContractJsonSerializer(typeof(T)).ReadObject(ms);
}
}

//将对应的类型转化为JSON字符串
public static string stringify(object jsonObject)
{
using (var ms = new MemoryStream())
{
new DataContractJsonSerializer(jsonObject.GetType()).WriteObject(ms, jsonObject);
return Encoding.UTF8.GetString(ms.ToArray());
}
}
}
}


接下来调用class处理json:
//解析从服务端返回的JSON结果
UpdateInfoJSON updateInfo = JSONOperator.parase<UpdateInfoJSON>(result);
string result = JSONOperator.stringify(updateInfo);
完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C# json
相关文章推荐