1

我正在使用 Blockchain.info API。我想反序列化 JSON 响应。示例响应:

{
    "addresses": [
        {
            "balance": 1400938800,
            "address": "1Q1AtvCyKhtveGm3187mgNRh5YcukUWjQC",
            "label": "SMS Deposits",
            "total_received": 5954572400
        },
        {
            "balance": 79434360,
            "address": "1A8JiWcwvpY7tAopUkSnGuEYHmzGYfZPiq",
            "label": "My Wallet",
            "total_received": 453300048335
        },
        {
            "balance": 0,
            "address": "17p49XUC2fw4Fn53WjZqYAm4APKqhNPEkY",
            "total_received": 0
        }
    ]
}

问题是如何创建一个适合这个的类。我试过这个,但它不工作:

Public Function LoadJson(ByVal json As String)
    Dim items As List(Of addresses) = JsonConvert.DeserializeObject(Of List(Of addresses))(json)
    Return items
End Function
Public Class addresses
    Public addresses As address()
End Class
Public Class address
    Public balance
    Public address
    Public label
    Public total_received
End Class

谢谢!

4

1 回答 1

0

你可以用一种简单的方式弄清楚:

去那里http://json2csharp.com/粘贴你的 json ,它会让你的类和它的依赖。

然后你可以在你的应用程序中创建你的新应用程序并简单地使用 javascript.serialize,反序列化没有其他内容,它会完美运行

下面是一个完全正常工作的控制台应用程序示例:

Imports System.Net
Imports System.IO
Imports System.Configuration
Imports System.Web.Script.Serialization

Module Module1
    Dim js As New JavaScriptSerializer

    Sub Main()

    Dim json As String = String.Empty

    Using sr As New StreamReader("C:\Users\Giorgio\Desktop\GOOGLEDRIVE\hpc\PROGETTI VS PERSONALI\VISUALSTUDIOPROJECT\2014\Smples\Smples\json.txt")
        json = sr.ReadToEnd
    End Using
    Dim separator As String = "**********************************************************"
    Dim root As RootObject = js.Deserialize(Of RootObject)(json)

    For Each el In root.addresses
        Console.WriteLine(String.Format("{0}" & vbCrLf & "{1}" & vbCrLf & "{2}" & vbCrLf & "{3}" & vbCrLf & separator, el.address, el.balance, el.label, el.total_received))
    Next


        Console.ReadLine()
End Sub


Public Class Address
    Public Property balance() As Integer
        Get
            Return m_balance
        End Get
        Set(value As Integer)
            m_balance = Value
        End Set
    End Property
    Private m_balance As Integer
    Public Property address() As String
        Get
            Return m_address
        End Get
        Set(value As String)
            m_address = Value
        End Set
    End Property
    Private m_address As String
    Public Property label() As String
        Get
            Return m_label
        End Get
        Set(value As String)
            m_label = Value
        End Set
    End Property
    Private m_label As String
    Public Property total_received() As Object
        Get
            Return m_total_received
        End Get
        Set(value As Object)
            m_total_received = Value
        End Set
    End Property
    Private m_total_received As Object
End Class

Public Class RootObject
    Public Property addresses() As List(Of Address)
        Get
            Return m_addresses
        End Get
        Set(value As List(Of Address))
            m_addresses = Value
        End Set
    End Property
    Private m_addresses As List(Of Address)
End Class

端模块

我希望它可以帮助你问候

于 2014-07-04T23:12:58.113 回答