摘要:本文将带你了解C#编程之 VB .NET 解析 JSON,希望本文对大家学C#/.Net有所帮助
如何在 .NET 程序中解析 JSON
使用 Newtonsoft.Json 第三方类来操纵
Newtonsoft.Json 是.NET 下开源的json格式序列号和反序列化的类库
官方网站: //json.codeplex.com/
Imports System.Text.RegularExpressions
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq''' <summary>
''' json序列化''' </summary>
Public Class json
''' <summary>
''' 解析JSON数据
''' </summary>
''' <param name="empData">源数据</param>
''' <param name="key">指定值下的数据,可省略。</param>
''' <returns>0 非 json 数据</returns>
Public Shared Function JsonDecode(ByVal empData, Optional ByVal key1 = Nothing, Optional ByVal key2 = Nothing, Optional ByVal arry_i = Nothing) As String
Try
If IsJson(empData) = False Then Return 0
If arry_i IsNot Nothing Then
'//blog.csdn.net/goodelephant/article/details/24769421
Return CType(JsonConvert.DeserializeObject(empData), JObject)(key1)(arry_i)(key2).ToString() '这个是解析数组 下标。。
End If
If key1 = Nothing Then Return CType(JsonConvert.DeserializeObject(empData), JObject).ToString
If key2 = Nothing Then Return CType(JsonConvert.DeserializeObject(empData), JObject)(key1).ToString()
Return CType(JsonConvert.DeserializeObject(empData), JObject)(key1)(key2).ToString()
Catch ex As Exception
Return ex.Message
End Try
End Function
''' <summary>
''' 序列化 json
''' </summary>
''' <param name="str">对象</param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function JsonEncode(ByVal str As Object) As String
Try
Return JsonConvert.SerializeObject(str)
Catch ex As Exception
Return ex.Message
End Try
End Function
Public Shared Function JsonSerializeMore_HttpJson(ByVal code As String, ByVal msg As String, Optional ByVal data As Object = Nothing)
'//bbs.csdn.net/topics/390910345
'//www.cnblogs.com/08shiyan/p/3464028.html
' Dim cusList As New List(Of httpjson)()
'Dim cusList As New List(Of HttpJson)
'cusList.Add(New HttpJson("6902083881405", "娃哈哈饮用纯净水", ""))
'cusList.Add(New HttpJson("6902083893736", "娃哈哈营养快线原味"))
'Dim dic As Dictionary(Of String, HttpJson) = New Dictionary(Of String, HttpJson)
'dic.Add("1", New HttpJson("1", "2", 1.1))
''dic.Add("2222", New HttpJson("1", "2", 1.1))
'' dic.Add("3333", New HttpJson("1", "2", 1.1))
'Dim jsonStr As String = Newtonsoft.Json.JsonConvert.SerializeObject(dic)
'MsgBox(jsonStr)
'MsgBox(JsonConvert.SerializeObject(cusList))
Return JsonEncode(New HttpJson(code, data))
End Function
''' <summary>
''' json转换datatable
''' </summary>
''' <param name="strJson"></param>
''' <returns>返回 0 非json 数据</returns>
Public Shared Function JsonToDataTable(ByVal strJson As String) As DataTable
Dim rg As New Regex("(?<={)[^:]+(?=:\[)", RegexOptions.IgnoreCase)
Dim strName As String = rg.Match(strJson).Value
Dim dt As DataTable = Nothing
strJson = strJson.Substring((strJson.IndexOf("[") + 1))
strJson = strJson.Substring(0, strJson.IndexOf("]"))
Dim matchs As MatchCollection = New Regex("(?<={)[^}]+(?=})").Matches(strJson)
Dim i As Integer
For i = 0 To matchs.Count - 1
Dim strRow As String = matchs(i).Value
Dim strRows As String() = Split(strRow, ",")
If (dt Is Nothing) Then
dt = New DataTable
dt.TableName = strName
For Each str As String In strRows
Dim dc As New DataColumn
Dim strCell As String() = Split(str, ":")
dc.ColumnName = strCell(0).Replace("""", "")
dc.ColumnName = Trim(dc.ColumnName.Replace(Chr(13), ""))
dc.ColumnName = Trim(dc.ColumnName.Replace(Chr(10), ""))
dt.Columns.Add(dc)
Next
dt.AcceptChanges()
End If
Dim dr As DataRow = dt.NewRow()
For j As Integer = 0 To strRows.Length - 1
dr(j) = Trim(strRows(j).Split(":")(1).Replace("""", ""))
Next j
dt.Rows.Add(dr)
dt.AcceptChanges()
Next i
Return dt
End Function
''' <summary>
''' 验证是否 JSON 数据
''' </summary>
''' <param name="input"></param>
''' <returns></returns>
Public Shared Function IsJson(ByVal input As String) As Boolean
If input = "" Then Return False '为空字符时会出现异常,这里直接返回,不进行检测
input = input.Trim
Return ((input.StartsWith("{") AndAlso input.EndsWith("}")) OrElse (input.StartsWith("[") AndAlso input.EndsWith("]")))
End Function
End Class
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;
namespace test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string jsonstr = "json 待解析的字符";
MessageBox.Show(
((Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(jsonstr))["data"]["name"].ToString()
);
}
}
}
以上就介绍了C#.NET的相关知识,希望对C#.NET有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言C#.NET频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号