国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 擴展 > JSON > 正文

使用 ServiceStack.Text 序列化 json的實現代碼

2024-09-06 20:18:16
字體:
來源:轉載
供稿:網友

相信做 .net 開發的朋友經常會遇到 json 序列化這樣的需要,今天發篇文章總結下自己使用ServiceStack.Text 來序列化 json。它的速度比 Newtonsoft.Json 快很多,在測試時發現比 fastJson 還快些。

首先,我們有下邊兩個類,一個是職員(Staff)類,一個是聯系方式(Contact)類:

代碼如下:
public class Staff
{
    public long ID { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

public class Contact
{
    public long StaffID { get; set; }
    public string Email { get; set; }
}

首先,我們添加兩個職員:

代碼如下:
List<Staff> listStaff = new List<Staff>();
listStaff.Add(new Staff() { ID = 2, Name = "小李" });
listStaff.Add(new Staff() { ID = 3, Name = "小王" });

按以前很多人序列化 json 的方式:

代碼如下:
var result = "[";
foreach (var staff in listStaff)
{
    result += "{/"ID/":/"" + staff.ID + "/",/"Name/":/"" + staff.Name + "/"},";
}
result = result.Substring(0, result.Length - 1);
result += "]";

最終 json 如下:
代碼如下:
[
    {
        "ID": "2",
        "Name": "小李"
    },
    {
        "ID": "3",
        "Name": "小王"
    }
]

使用這種方式是可以的,但有幾個缺點:1.代碼顯得雜亂,易出錯。2.需要自己對特殊字符進行轉義,如雙引號等,否則 json 序列化將失敗。下邊看看使用 ServiceStack.Text 來序列化 json。

我們需要下載 ServiceStack.Text.dll,將它引用到我們的項目中,并引用 ServiceStack.Text 命名空間。下邊先看看單個類對象的序列化:

代碼如下:
Staff staff = new Staff() { ID = 1, Name = "xiaozhao" };
var result = staff.ToJson();

這樣得到的 json 如下:

代碼如下:

{
    "ID": 1,
    "Name": "xiaozhao",
    "Age": 0
}

細心的朋友會發現,我們在輸出中并不打算使用 Age 屬性,但這里卻輸出了 Age,為解決這個問題,我們有下邊方法。

1.使用 JsonObject 類,它繼承自Dictionary<string, string>,使得我們可以如下來輸出我們想要的屬性。

代碼如下:
Staff staff = new Staff() { ID = 1, Name = "xiaozhao" };

JsonObject json = new JsonObject();
json.Add("ID", staff.ID.ToString());
json.Add("Name", staff.Name);

var result = json.ToJson();

這樣得到下邊的結果[結果一],達到了我們的目的。
代碼如下:
{
    "ID": 1,
    "Name": "xiaozhao"

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 磴口县| 东乌| 海口市| 南投市| 沅江市| 天津市| 平舆县| 卓资县| 固镇县| 金塔县| 宕昌县| 许昌市| 临武县| 鹤庆县| 西青区| 洛浦县| 芒康县| 准格尔旗| 石家庄市| 新巴尔虎右旗| 凌源市| 成安县| 托克托县| 大姚县| 洪湖市| 吴旗县| 建湖县| 苏尼特左旗| 东光县| 安岳县| 额济纳旗| 静宁县| 和顺县| 大同县| 库尔勒市| 诏安县| 竹山县| 新疆| 白山市| 临潭县| 陈巴尔虎旗|