作者wind681201 (阿風~~)
看板C_Sharp
標題[問題] JSON的驗證方法
時間Mon Mar 12 19:15:37 2018
想請問各位大大。
若我想要驗證我的json字串跟我的class是符合的,該怎麼做呢?
舉個例子
class member{
public string name;
public string id;
}
若是字串是 {\"id\":\"aaa\",\"id\":\"bbb\"}
預設的狀況下,json.net可以反序列回member
但我不想讓他反序列回去,該怎麼做呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.73.164
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1520853340.A.09A.html
1F:→ t64141: jtoken, jobject, jarray, jproperty ? 03/12 19:53
2F:→ t64141: 或是暴力反射出class的properties,再拿名字去json字串裡 03/12 19:56
3F:→ t64141: 面找,但可預期的問題會很多,尤其如果要支援巢狀的類別 03/12 19:56
4F:→ wind681201: 真的,我試過很多,也有反序列,再序列比對字串,都會 03/12 21:28
5F:→ wind681201: 產生很多不同的問題,真不知該怎麼辦 03/12 21:29
6F:→ t64141: 不想反序列的原因是什麼?釐清限制與原因比較好下手 03/12 21:52
7F:→ landlord: 是指 一定要有name? 03/12 23:39
8F:→ Tony427: 也可以用dataannotations驗證欄位值啊~ 03/13 15:43
9F:→ Tony427: 有時候不一定只有一種解法XD.先看看你的需求跟問題是什麼 03/13 15:43
10F:→ wind681201: 我想做的,就只是字串跟物件,一定要欄位一樣,才可以 03/13 19:39
11F:→ wind681201: 做轉換,不然,不讓他做轉換 03/13 19:39
12F:→ m339606: JSON Schema validato 03/13 20:07
13F:推 manure54321: 先把你的物件轉換成JObject,然後var 一個變數,變 04/26 15:37
14F:→ manure54321: 數用你要的型別做cast,然後檢查 04/26 15:37
15F:推 upasaka: 我上次反序列不出來,(接收restful api result值),後來 06/02 14:24
16F:→ upasaka: 用json to string 然後string split字元,切成字串陣列 06/02 14:24
17F:→ upasaka: 後,replace不要的字元,用空字串,然後裝進list〈string 06/02 14:24
18F:→ upasaka: 〉,跑foreach比對。我後來是寫成method ,傳入參數是jso 06/02 14:24
19F:→ upasaka: n to sting return 出來是list〈string〉。算是暴力法解 06/02 14:24
20F:→ upasaka: 出,供你參考 06/02 14:24