[心得] System.Text.Json與Json.NET比較
測試JSON
https://github.com/trebonian/visual6502/blob/master/segdefs.js
下載後要移除開頭 "var segdefs =" 字串
json.net 測試環境
.net framework 4.8
nuget 安裝最新 Newtonsoft.Json 12.0.3
try
{
string json_str = File.ReadAllText(Application.StartupPath +
@"\segdefs.js");
object json_obj = JsonConvert.DeserializeObject<object>
( json_str );
Console.WriteLine(st.ElapsedMilliseconds);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
順利parse成物件 經測試能相容 /*....*/ 或是 // js的註解
system.text.json測試環境
.NET Core 3.1
try
{
string json_str = File.ReadAllText(Application.StartupPath +
@"\segdefs.js");
object json_obj =
JsonSerializer.Deserialize<object>(json_str);
Console.WriteLine(st.ElapsedMilliseconds);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
無法處理JS /* .... */ 或是 // 註解 另外PARSE失敗
例外訊息
''' is an invalid start of a value. Path: $ |
LineNumber: 1 | BytePositionInLine: 6.
我是搞不太懂原因 不知道是不是單一資料量太大 或是
SAMPLE檔格式有些規範標準問題
測試過小一點的其他JSON檔是OK
目前測試一下馬上踩雷..... 假若system.text.json處理JSON上有些問題
建議回到JSON.NET試試看
因為連PARSE都有問題 就不做速度上的比較了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.26.164.32 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1605002396.A.078.html
※ 編輯: erspicu (110.26.164.32 臺灣), 11/10/2020 18:05:56
→
11/10 18:32,
4年前
, 1F
11/10 18:32, 1F
→
11/10 18:33,
4年前
, 2F
11/10 18:33, 2F
→
11/10 18:34,
4年前
, 3F
11/10 18:34, 3F
移除掉"var segdefs ="和註解後 就一個塞著json內容的檔案而已
不過JSON.NET比較厲害 還能相容註解
現在的重點是 移除掉註解和"var segdefs ="後
system.text.json照樣PARSE不出來
→
11/10 18:37,
4年前
, 4F
11/10 18:37, 4F
剛用驗證器查一下問題 '+' 要改成 "+" 才能pass 看來JSON.NET寬容很多
理論上JSON定義就是JAVASCRIPT的物件
不過真的JAVASCRIPT內可以用的JSON好像又不一定完全符合某些RFC規範
但很多時候用資料時候會把JS的資料直接挪用過去
看來這時候是JSON.NET好用一點
※ 編輯: erspicu (110.26.164.32 臺灣), 11/10/2020 21:20:54
後續還有一個規範問題 不允許 array , 號後沒有item
把最後多餘的 , 號刪除掉後 範例可以在 system.text.json 上parse
測試速度 system.text.json 效率的確比較好 40ms左右
而Josn.net 大概會在200ms左右 足足快了將近5倍
不過JSON.NET處理寬容度真的高 如果從網路上抓JS內資料要用
遇到一些格式問題懶得修正 大概是JSON.NET理想 速度的話推薦system.text.json
※ 編輯: erspicu (110.26.164.32 臺灣), 11/10/2020 22:55:19
→
11/11 11:18,
4年前
, 5F
11/11 11:18, 5F
→
11/11 11:19,
4年前
, 6F
11/11 11:19, 6F
→
11/11 11:21,
4年前
, 7F
11/11 11:21, 7F
→
11/11 11:25,
4年前
, 8F
11/11 11:25, 8F
→
11/11 11:25,
4年前
, 9F
11/11 11:25, 9F
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章