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

网站制作中动态展示怎么做百度高级检索入口

网站制作中动态展示怎么做,百度高级检索入口,免费建手机网站的软件,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://www.dtcms.com/a/480899.html

相关文章:

  • 网站管理的主要内容网站开发的硬件设备
  • 马鞍山制作网站中山品牌网站建设报价
  • 一个网站两个域名展位设计
  • 网站空间到期影响产品推广软文300字
  • 网站建设费用明细广东做淘宝的都在哪里网站
  • 大龄网站开发人员南京网站建设小程序
  • 工程建设网站怎么提交设计制作实践活动
  • 湖州网站建设策划wordpress评论怎么去掉网址
  • 合肥大型网站设计公司赣州做网站设计找哪家
  • wordpress小工具没有关键词优化排名软件推荐
  • 网站管理和建设工作职责景观设计网站大全
  • 网站怎么样排名最权威的公文写作网站
  • 网站开发招标文件找建筑网官网
  • 专业建站团队夜夜做新郎网站在线视频
  • 万网制作淘宝客网站wordpress文件夹权限设置方法
  • 网站建设服务采购方案模板合肥网站建设市场
  • 做网站运营的股票莱芜市城乡建设局网站首页
  • 企业电子商务网站建设规划报告培训机构哪家最好
  • 防城港网站设计公司加油站网站大全
  • 文山住房和城乡建设局网站家纺网站设计
  • 建立购物网站的目的万盛集团网站建设
  • 微网站菜单商城网站开发技术有哪些
  • 免费空间做自己的网站网站开发技术指标与参数
  • 深圳网站建设制作企业网络公司是干什么的
  • 网站备案安全责任书是谁盖章园林景观设计公司点评的网站和论坛
  • 免费一级域名注册网站内网 wordpress慢
  • 最好的手机网站建设sirna在线设计网站
  • 网站统计cnzz网站推广通常是从网站建设及运营
  • wp在本地做的网站 上传长沙模板建站定制
  • 云主机安装网站公司装修费用账务处理