当前位置: 代码迷 >> VB Dotnet >> C#转VB.NET遇到的有关问题
  详细解决方案

C#转VB.NET遇到的有关问题

热度:86   发布时间:2016-04-25 02:04:28.0
C#转VB.NET遇到的问题
本帖最后由 xu3180497 于 2014-12-08 14:54:34 编辑
代码是从csdn下载的,关于在.NET中如何解析JSON数据的,地址是:http://blog.csdn.net/zhoufoxcn/article/details/6254657
然后我试着转成VB.NET,但总是提示各种错误,想请大家帮忙看看我转化的哪些地方有问题?中间一部分就没写了,定义属性那些都一样

Imports System.Runtime.Serialization
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Imports Newtonsoft.Json.Converters

Public Class Class2
Public Function JsonConvertDemo()
Dim user As User = New User() {UserId = 1, UserName = "李刚", CreateDate = DateTime.Now.AddYears(-30), Birthday = DateTime.Now.AddYears(-50), Priority = Priority.BelowNormal, Salary = 5000}
'JsonConvert类在Newtonsoft.Json.Net35.dll中,注意到http://www.codeplex.com/json/下载这个dll并添加这个引用
'JSON序列化
Dim result As String = JsonConvert.SerializeObject(User)
Console.WriteLine("使用JsonConvert序列化后的结果:{0},长度:{1}", result, result.Length)
'JSON反序列化
user = JsonConvert.DeserializeObject < user > (result)
Console.WriteLine("使用JsonConvert反序列化后的结果:UserId:{0},UserName:{1},CreateDate:{2},Priority:{3}", user.UserId, user.UserName, user.CreateDate, user.Priority)
End Function

'<Serializable()>
Public Class User
'' <summary>
'' 编号
'' </summary>
Public Property UserId As Integer
Get

End Get
Set(ByVal value As Integer)

End Set
End Property
                .........
Public Sub User()
Urls = New List(Of String)
End Sub
End Class
'' <summary>
'' 权利级别
'' </summary>
Public Enum Priority As Byte
Lowest = 1
BelowNormal = 2
Normal = 4
AboveNormal = 8
Highest = 22
End Enum
End Class


------解决思路----------------------
引用:
Dim user As User = New User() {UserId = 1, UserName = "李刚", CreateDate = DateTime.Now.AddYears(-30), Birthday = DateTime.Now.AddYears(-50), Priority = Priority.BelowNormal, Salary = 5000}
这句一直提示无效
 你看看我给你的两个链接吧,VB.NET我敲起来无比郁闷。不熟悉VB,NET
------解决思路----------------------
引用:
Quote: 引用:

 Dim user As User = New User() {}
  Dim result As String = JsonConvert.SerializeObject(User)//感觉这里会不对
参考VB.NET 用JSON
 http://www.csharpwin.com/dotnetspace/11045r7150.shtml
http://www.haogongju.net/art/1495924


Dim user As User = New User() {UserId = 1, UserName = "李刚", CreateDate = DateTime.Now.AddYears(-30), Birthday = DateTime.Now.AddYears(-50), Priority = Priority.BelowNormal, Salary = 5000}

这句一直提示无效

VB.NET那里需要用new XXX() With{.XXX=XXX}
比C#里多了个With关键字,每个属性面前多了个点。
这个是VB的语法,具体你可以搜“With关键字”。
------解决思路----------------------
先去装个 .Net Reflector。
把 C# 的代码编译成 dll。
用 Reflector 打开该 dll,查看语言选 Visual Basic,就能查看反编译出来的 VB.Net 代码了。
如果装了 File Disassembler 插件,还可以选定整个 NameSpace,批量反编译代码。

.Net 框架下的语言转换都可以通过这种方式,手工要做的就是建工程、把源代码包含进来。
------解决思路----------------------
所给不全引起的部分报错已经注释,vb语法会稍微比C#麻烦些,但整体更容易阅读,代码版面要美观很多很多很多。。。

Imports System.Runtime.Serialization
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Imports Newtonsoft.Json.Converters

Public Class Class2
    Public Function JsonConvertDemo()
        Dim user As User = New User()

        'UserId = 1, UserName = "李刚", CreateDate = DateTime.Now.AddYears(-30), Birthday = DateTime.Now.AddYears(-50), Priority = Priority.BelowNormal, Salary = 5000}
        With user
            .UserId = 1
            '.UserName = "李刚"
            '... z自己补,User属性不全
        End With

        'JsonConvert类在Newtonsoft.Json.Net35.dll中,注意到http://www.codeplex.com/json/下载这个dll并添加这个引用
        'JSON序列化
        'Dim result As String = JsonConvert.SerializeObject(user)
        'Console.WriteLine("使用JsonConvert序列化后的结果:{0},长度:{1}", result, result.Length)
        'JSON反序列化
        'user = JsonConvert.DeserializeObject < user > (result)
        'Console.WriteLine("使用JsonConvert反序列化后的结果:UserId:{0},UserName:{1},CreateDate:{2},Priority:{3}", user.UserId, user.UserName, user.CreateDate, user.Priority)
    End Function

    '<Serializable()>
    Public Class User
        '' <summary>
        '' 编号
        '' </summary>
        Public Property UserId As Integer
            Get

            End Get
            Set(ByVal value As Integer)

            End Set
        End Property
        '.........
        Public Sub User()
            'Urls = New List(Of String)
        End Sub
    End Class
    '' <summary>
    '' 权利级别
    '' </summary>
    Public Enum Priority As Byte
        Lowest = 1
        BelowNormal = 2
        Normal = 4
        AboveNormal = 8
        Highest = 22
    End Enum
End Class
  相关解决方案