吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5|回复: 0
收起左侧

[C&C++ 原创] c#/vb.net Newtonsoft.Json取Json值哪个方法最快?

[复制链接]
自动化软件开发 发表于 2026-6-8 00:10
本帖最后由 自动化软件开发 于 2026-6-8 00:12 编辑

对 JToken(Newtonsoft.Json)来说,CStr (result) 并不比 result.ToString () 快;多数场景下差不多,甚至更慢。
而且 CInt/CBool 也不是 “最快”,只是方便。

下面讲清楚原因和实测结论。
一、先说 VB.NET 原生类型(Integer、Boolean…)1. CStr() vs .ToString()官方文档:VB 的 CStr、CInt、CBool 是内嵌编译,有优化,比 Convert.ToString 快Microsoft Learn。但 对比对象的 .ToString ():对 值类型(Integer/Double):ToString() 更快,因为 少一层 VB 函数包装 + 文化检查。对 Object / 未知类型:CStr 更安全(处理 DBNull、Nothing),但略慢。2. CInt/CBool 快吗?对数值类型 → Integer:CInt() 很快,是强类型直接转换Microsoft Learn。但对 JToken 这种复杂对象:CInt(result) ≈ result.ToObject(Of Integer)(),本质一样,没有更快Microsoft Learn。
二、重点:你关心的 JToken(Newtonsoft.Json)1. CStr (result) 与 result.ToString ()
JToken 的 ToString ():直接返回 JSON 原始文本(最快路径)。
CStr(result):先判断是否为 Nothing/DBNull调用 result.ToString()再做文化 / 编码处理→ 多一层 VB 函数开销,更慢。
实测结论(JToken):
最快:result.ToString()
次之:CStr(result)
最慢:Convert.ToString(result)
2. CInt (result) 与 result.ToObject (Of Integer)()
完全等价:CInt(result) 最终也是调用 ToObject(Of Integer)
没有更快,只是简写。
三、给你最终写法(又快又安全)字符串(优先用 ToString)vbDim txt As String = If(result Is Nothing, "", result.ToString())整数(直接 ToObject,或你要的扩展)
Dim num As Integer = If(result Is Nothing, 0, result.ToObject(Of Integer)())你之前的扩展(可以保留,但别指望更快)
vb
[Visual Basic] 纯文本查看 复制代码
<Extension()>
Public Function ToInt(token As JToken) As Integer
    If token Is Nothing Then Return 0
    Return token.ToObject(Of Integer)()
End Function


四、一句话总结原生值类型:ToString() 比 CStr 快。JToken(JSON):result.ToString () 最快,CStr 稍慢。CInt/CBool:只是语法糖,和 ToObject 性能一样Microsoft Learn。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-6-8 00:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表