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

网站维护托管要多少钱交换友情链接的渠道有哪些

网站维护托管要多少钱,交换友情链接的渠道有哪些,学校网站如何建设,厦门做网站优化公司在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://www.dtcms.com/wzjs/136630.html

相关文章:

  • 设计网站与建设永久免费客服系统
  • 郑州哪家公司做网站好免费百度seo引流
  • .简述网站开发的流程搜收录批量查询
  • 做58网站每天可以发几条网络营销推广策划书
  • wordpress 邮件推送seo是什么东西
  • 网站建设的解决方案手机怎么建立网站
  • 海南省住房与城乡建设厅网站可查自己如何注册一个网站
  • wordpress设计网站百度客服在线咨询人工服务
  • 上海永灿网站建设小熊代刷推广网站
  • 珠海市建设工程造价协会网站如何创建网站教程
  • 安徽省住房和城乡建设厅网站域名优化推荐
  • 电子商务网站建设实验营销方式有哪几种
  • dede网站怎么做单页面郑州网站关键词排名技术代理
  • 百度广州分公司容易进吗优化推广网站排名
  • 衡阳网站制作重庆seo按天收费
  • 社会保险网站网络营销课程个人总结范文
  • 如何做网站内页百度外推排名
  • 哪个网站做网站方便百度官方营销推广平台加载中
  • 怎样在淘宝网做网站品牌策略包括哪些内容
  • 常州制作企业网站免费的大数据分析平台
  • b2b平台有哪些平台网址网站seo关键词排名
  • 建网站的公司广州排名怎么制作网站二维码
  • 班级网站主页设计模板厦门关键词优化报价
  • 自己做的网站打不开sem和seo是什么意思
  • 新闻网站模板软文发布的平台与板块
  • 网站后台模板关联自己做的网站seo学习
  • 南京模板网站开发steam交易链接在哪里看
  • 为什么要用h5建站永久免费自助建站软件
  • 廊坊网站推广外包企业网站模板图片
  • 做网站外网可访问公司网站建设需要多少钱