Json轉換值型別欄位為空字串時報錯問題

2022-05-17 19:23:21 字數 1335 閱讀 3856

在寫webservices時,碰到的問題。

定義的類

public

class

user

public

int? iage

public

string sname

}

(1)當iage為非空值

string strjson = "";

結果:正常解析。三個欄位都有值。

(2)當iage欄位未傳遞時

string strjson = "";

結果:正常解析。sid和sname有值,iage欄位為null。

(3)當iage欄位為空字串時

string strjson = "";

結果:解析失敗。

(4)問題:

明明iage欄位為int?,是可以賦值為null的啊。

自己寫了個控制台進行測試,結果是以上的三種情況都能正常解析。

百思不得其解,於是請教大佬。

大佬一語道破,newtonsoft.json版本的原因。

工作專案使用的是4.0.8,我建立的控制台專案使用的是9.0.1。

大佬給的說明,我是看不懂。我工作專案中使用的版本不支援轉換空的值型別吧。

於是,尋找版本:

使用的是 newtonsoft.json -version 8.0.3 版本。

將工作專案中的dll檔案進行了替換。

替換後,就發布了乙個版本。

然而,又報錯了。

原因:使用了更高版本的dll檔案。

解決:在web.config的節點中,新增以下內容。

<

dependentassembly

>

<

assemblyidentity

name

="newtonsoft.json"

publickeytoken

="30ad4fe6b2a6aeed"

culture

="neutral"

/>

<

bindingredirect

oldversion

="0.0.0.0-8.0.0.0"

newversion

="8.0.0.0"

/>

dependentassembly

>

至此完事。

json屬性值為null時轉換

解決思路 將屬性值 null 轉換成 解決方法如下 1.經過搜尋可以用下面的方法 gson gson new gsonbuilder serializenulls create 但是這個卻無法解決反序列問題,怎麼解決呢?我在stackoverflow上找到了這個問題,親測有效 2.解決辦法如下 gs...

sql條件字段值型別轉換問題

今天發現乙個有趣的問題 users表中存在id為1 2 3的三條記錄,當我執行以下sql查詢資料庫時,select from users where id 1.html 竟然發現可以查詢出id為1的user記錄資訊,有點意外。修改字段屬性,將id由int型別轉換為varchar型別後,執行上一條sq...

sql條件字段值型別轉換問題

今天發現乙個有趣的問題 users表中存在id為1 2 3的三條記錄,當我執行以下sql查詢資料庫時,select from users where id 1.html 竟然發現可以查詢出id為1的user記錄資訊,有點意外。修改字段屬性,將id由int型別轉換為varchar型別後,執行上一條sq...