国产探花免费观看_亚洲丰满少妇自慰呻吟_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"

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 炎陵县| 屯门区| 科尔| 宁夏| 昌都县| 乐平市| 江西省| 灵山县| 城市| 抚远县| 龙游县| 河东区| 平昌县| 陆川县| 元阳县| 施甸县| 蓬莱市| 梁山县| 阿鲁科尔沁旗| 左云县| 陇川县| 陈巴尔虎旗| 巴中市| 彭阳县| 永清县| 旌德县| 鄱阳县| 安远县| 阜南县| 兴宁市| 郓城县| 宝应县| 积石山| 平原县| 黄大仙区| 蒙城县| 东莞市| 衡山县| 松阳县| 广宗县| 黔西|