当前位置: 首页 > wzjs >正文

网站所有权网站设计全包

网站所有权,网站设计全包,企业所得税怎么缴纳,wordpress自定义字段插件在VB.NET中,若要从 JSON 数据里提取Data.DataList数组中的CategoryId,并将其转换为VB.NET数组,可借助Json.NET(Newtonsoft.Json)库来实现。下面为你详细介绍具体的实现步骤和代码示例: 一、实现 JSON 到数…

在VB.NET中,若要从 JSON 数据里提取Data.DataList数组中的CategoryId,并将其转换为VB.NET数组,可借助Json.NET(Newtonsoft.Json)库来实现。下面为你详细介绍具体的实现步骤和代码示例:

一、实现 JSON 到数组的转换

方法 1:通过 JObject 解析(灵活通用)
Imports Newtonsoft.Json
Imports Newtonsoft.Json.LinqPublic Function ExtractCategoryIds(jsonText As String) As Long()Try' 解析JSON根对象Dim jsonObj As JObject = JObject.Parse(jsonText)' 获取DataList数组Dim dataList As JArray = jsonObj?("Data")?("DataList") as JArrayIf dataList Is Nothing ThenReturn New Long(-1) {}  ' 返回空数组End If' 提取CategoryId并转换为数组Return dataList.Select(Function(item) item?("CategoryId")?.Value(Of Long)()).Where(Function(id) id.HasValue).Select(Function(id) id.Value).ToArray()Catch ex As ExceptionConsole.WriteLine("JSON解析错误: " & ex.Message)Return New Long(-1) {}  ' 出错时返回空数组End Try
End Function

方法 2:反序列化为强类型对象(类型安全)

Imports Newtonsoft.Json' 定义数据模型
Public Class RootObjectPublic Property Code As IntegerPublic Property Data As DataObject
End ClassPublic Class DataObjectPublic Property TotalCount As IntegerPublic Property PageIndex As IntegerPublic Property PageSize As IntegerPublic Property DataList As List(Of CategoryItem)
End ClassPublic Class CategoryItemPublic Property CategoryId As Long
End Class' 转换方法
Public Function ExtractCategoryIdsWithModel(jsonText As String) As Long()Try' 反序列化为强类型对象Dim root As RootObject = JsonConvert.DeserializeObject(Of RootObject)(jsonText)' 提取CategoryId数组If root?.Data?.DataList Is Nothing ThenReturn New Long(-1) {}End IfReturn root.Data.DataList.Select(Function(item) item.CategoryId).ToArray()Catch ex As ExceptionConsole.WriteLine("JSON反序列化错误: " & ex.Message)Return New Long(-1) {}End Try
End Function

二、使用示例

Sub Main()Dim jsonText As String = "{""Code"":200,""Data"":{""TotalCount"":14,""PageIndex"":1,""PageSize"":100,""DataList"":[{""CategoryId"":271},{""CategoryId"":272}]}}"' 方法1:动态解析Dim categoryIds1 As Long() = ExtractCategoryIds(jsonText)' 方法2:强类型解析Dim categoryIds2 As Long() = ExtractCategoryIdsWithModel(jsonText)' 输出结果Console.WriteLine("提取的CategoryId数组:")For Each id In categoryIds1Console.WriteLine(id)  ' 输出: 271, 272Next
End Sub

三、关键要点说明

  1. 空值处理

    • 运用?.操作符来避免出现NullReferenceException
    • 对可能为空的数组进行检查,防止程序崩溃。
  2. 类型转换

    • 采用Value(Of Long)()方法将 JSON 值转换为 Long 类型。
    • 借助Where(Function(id) id.HasValue)过滤掉无效的值。
  3. 异常处理

    • 捕获JsonReaderExceptionJsonSerializationException,增强程序的健壮性。
    • 出错时返回空数组,而非Nothing,减少上层代码的判断逻辑。

四、扩展功能

1. 处理嵌套路径(通用方法)

vb

Public Function ExtractValuesByPath(jsonText As String, path As String) As Long()TryDim jsonToken As JToken = JToken.Parse(jsonText)Dim tokens As IEnumerable(Of JToken) = jsonToken.SelectTokens(path)Return tokens.Select(Function(token) token.Value(Of Long)()).ToArray()Catch ex As ExceptionConsole.WriteLine($"提取路径 {path} 出错: {ex.Message}")Return New Long(-1) {}End Try
End Function' 使用示例
Dim categoryIds As Long() = ExtractValuesByPath(jsonText, "$.Data.DataList[*].CategoryId")
2. 异步解析大 JSON 文件
Public Async Function ExtractCategoryIdsAsync(jsonText As String) As Task(Of Long())TryUsing reader As New StringReader(jsonText)Using jsonReader As New JsonTextReader(reader)Dim serializer As JsonSerializer = New JsonSerializer()Dim root As RootObject = Await Task.Run(Function() serializer.Deserialize(Of RootObject)(jsonReader)End Function)Return root?.Data?.DataList?.Select(Function(item) item.CategoryId).ToArray() ?? New Long(-1) {}End UsingEnd UsingCatch ex As ExceptionConsole.WriteLine("异步解析错误: " & ex.Message)Return New Long(-1) {}End Try
End Function

五、性能考量

  • 小 JSON:推荐使用强类型反序列化(方法 2),这样能提高代码的可读性和类型安全性。
  • 大 JSON:建议采用JsonTextReader进行流式解析,以降低内存的占用。
  • 动态路径:可使用SelectTokens方法来处理复杂的 JSON 结构。

通过上述方法,你可以在VB.NET中高效、安全地从 JSON 数据里提取所需的数组。

在不使用第三方库的情况下,如何实现JSON到数组的转换?

提供一些关于JSON和数组操作的VB.NET最佳实践。

除了Json.NET库,还有哪些常用的JSON库可用于VB.NET?


文章转载自:

http://pbzYEuH9.mqbdb.cn
http://JYXaZm7m.mqbdb.cn
http://Bf9FUf6i.mqbdb.cn
http://YJR1j9un.mqbdb.cn
http://ebZW1GEZ.mqbdb.cn
http://quKHSdgj.mqbdb.cn
http://ouCcC3qJ.mqbdb.cn
http://ZN1dOdon.mqbdb.cn
http://JYT8xOTD.mqbdb.cn
http://RJYoAnop.mqbdb.cn
http://fv1Tfr8B.mqbdb.cn
http://LSsgTQcT.mqbdb.cn
http://qRCfWqGP.mqbdb.cn
http://ZKAXOUHQ.mqbdb.cn
http://E6Xq7gZC.mqbdb.cn
http://7GTrkBOV.mqbdb.cn
http://U4oKuHS2.mqbdb.cn
http://NVDUx1d9.mqbdb.cn
http://vRkFSQrN.mqbdb.cn
http://8xFcAouU.mqbdb.cn
http://lgfzR6cn.mqbdb.cn
http://otwvNuyH.mqbdb.cn
http://Ld2Y3GAB.mqbdb.cn
http://2QjG6o01.mqbdb.cn
http://KfS2ct6h.mqbdb.cn
http://QYa34Q5h.mqbdb.cn
http://97Rv8GtI.mqbdb.cn
http://hBv8tjF4.mqbdb.cn
http://HOvzFFSJ.mqbdb.cn
http://7V6wNpbZ.mqbdb.cn
http://www.dtcms.com/wzjs/721915.html

相关文章:

  • 网站建设教程高清视频湖南平台网站建设哪里好
  • 手机上怎么做自己卖菜的网站wordpress注册码插件
  • 泰安网站建设哪家快天猫店买卖网站
  • 一流的邯郸网站建设网站框架文案
  • 手机网站大全下载店铺引流推广方案
  • wordpress本地网站怎么搬到服务器wordpress已停止访问
  • 网站怎么拿百度收入电商运营多少钱一个月
  • 中国建设网官方网站下载e路最新版建设银行网站连不上
  • 宣汉网站建设wordpress无法连接ftp
  • 做美食网站的图片素材山西省建设工程招投标监督网站
  • 从零开始做电影网站浙江省住房城乡建设厅网站首页
  • 社交投票论坛网站开发产品推广方式
  • 做技术分享网站 盈利网站联系我们模板
  • 什么都不会怎么做网站如果网站不备案
  • 网站开发语言在那看出来wordpress instagram
  • 图跃网站建设北京工厂和商务楼宇稳步复工
  • 湖北网站建设推荐深圳网站优化项目
  • 龙华三网合一网站建设网站ui设计公司
  • 学到什么程度可以做网站企业网站推广最有效的方法
  • 数码产品销售网站建设策划书网站用Access做数据库
  • 龙游网站建设硬件开发是干嘛的
  • 网络营销的主要形式有建设网站网络推广引流软件
  • 网站登录注册页面模板黄冈网站建设效果
  • 免费的毕业设计网站建设网站环境配置
  • 承德网站建设怎么做成都网站建设四川冠辰科技
  • 专门做2k名单的网站网页搭建公司
  • 学校网站深圳宝安区必去景点
  • 做网站发布网网站备案通管局
  • 网站后台登陆显示验证码错误网站建设系统规划方案
  • 做防水施工 上什么网站找源代码