c Enum之Json序列化

2021-08-09 03:41:06 字數 3249 閱讀 3383

象中包含列舉型別,在序列化成json字串的時候,顯示的是列舉型別對應的數字。

需要在json轉化的時候做一些操作,使之顯示字串

在列舉型別上新增屬性標籤

[jsonconverter(typeof(stringenumconverter))]

舉例如下:

包含列舉型別的物件定義

[csharp]view plain

copy

print?

[datacontract]  

public

class

definition : jsonbase  

[jsonproperty("name"

)]  

public

string

name   

[jsonproperty("title"

)]  

public

string

title   

[jsonproperty("description"

)]  

public

string

description   

[jsonproperty("required"

)]  

public

bool

required   

[jsonproperty("type"

)]  

public

type   

[jsonproperty("format"

)]  

public

string

format   

[jsonproperty("innertag"

)]  

public

bool

innertag   

}  

其中types為列舉型別,定義如下

[csharp]view plain

copy

print?

public

enum

types    

以上方式,直接查詢資料庫,返回結果如下:

[csharp]view plain

copy

print?

,    

其中type顯示的是列舉型別對應的數值

接下來在列舉型別頭部加上標籤

[csharp]view plain

copy

print?

[jsonconverter(

typeof

(stringenumconverter))]  

public

enum

types    

再次查詢獲得結果如下

[csharp]view plain

copy

print?

,    

以上就得到了想要的結果,但是又存在的問題是:

資料庫中儲存的字串型別的type欄位,如何對映到定義的物件中列舉型別的type

這就需要做轉化,把字串型別轉化成types列舉型別的字串

enum.parse(typeof(types), value.tostring())

將 string--->enum的轉化

以下附列舉型別的一些轉化方法

注意:列舉型別的基型別是除 char 外的任何整型,所以列舉型別的值是整型值。

enum 提供一些實用的靜態方法:

(1)比較列舉類的例項的方法

(2)將例項的值轉換為其字串表示形式的方法

(3)將數字的字串表示形式轉換為此類的例項的方法

(4)建立指定列舉和值的例項的方法。

舉例:enum colors ;

enum-->string

(1)利用object.tostring()方法:如colors.green.tostring()的值是"green"字串;

(2)利用enum的靜態方法getname與getnames:

public static string

getname(type

enumtype,object

value)

public static string

getnames(type

enumtype)

例如:enum.getname(typeof(colors),3))與enum.getname(typeof(colors), colors.blue))的值都是"blue"

enum.getnames(typeof(colors))將返回列舉字串陣列。

string-->enum

(1)利用enum的靜態方法parse:

public static object

parse(type

enumtype,string

value)

例如:(colors)enum.parse(typeof(colors), "red")

enum-->int

(1)因為列舉的基型別是除 char 外的整型,所以可以進行強制轉換。

例如:(int)colors.red, (byte)colors.green

int-->enum

(1)可以強制轉換將整型轉換成列舉型別。

例如:colors color = (colors)2 ,那麼color即為colors.blue

(2)利用enum的靜態方法toobject。

public static object

toobject(type

enumtype,int

value)

例如:colors color = (colors)enum.toobject(typeof(colors), 2),那麼color即為colors.blue

判斷某個整型是否定義在列舉中的方法:enum.isdefined

public static bool

isdefined(type

enumtype,object

value)

例如:enum.isdefined(typeof(colors), n))

json序列化 反序列化

json序列化 json的dumps方法可以將json格式資料序列為python的相關資料型別,比如str,常用於列印,另外,在序列化時,中文漢字被轉換為unicode編碼,在dumps函式中新增引數ensure ascii false可解決 dumps的indent參考可以調整顯示格式,即縮排,一...

Json序列化和反序列化

json測試 public class jsontest irun 實體序列化和反序列化 string json1 jsonhelper.serializeobject sdudent json1 student sdudent1 jsonhelper.deserializejsontoobject...

json序列化與反序列化

1.什麼是序列化與反序列化?序列化就是將記憶體中的資料結構轉換成一種中間格式儲存到硬碟或者基於到網路傳輸。反序列化就是將硬碟中或者網路中傳來的一種資料格式轉換成記憶體中資料格式。2.為什麼要有序列化和反序列化?1.可以儲存程式的執行狀態。比如遊戲中使用者在某個狀態下線,使用者遊戲的資料需要儲存,這時...