1

次のコードがあります。

Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Module Module1

Structure JSONList
    Dim Name, Email As String
    Dim Age As Integer
End Structure

Sub Main()
    Dim Data(1) As JSONList

    Data(0).Name = "Josh"
    Data(0).Age = 17
    Data(0).Email = "me@mail.co.uk"
    Data(1).Name = "Greg"
    Data(1).Age = 17
    Data(1).Email = "greg@hotmail.co.uk"

    Dim JSONEncode As String
    JSONEncode = JsonConvert.SerializeObject(Data)
    Console.WriteLine(JSONEncode)
    Console.WriteLine()
    Console.WriteLine()

    Dim JSONDecode() As JSONList = JsonConvert.DeserializeObject(JSONEncode)
    Console.WriteLine(JSONDecode(0).Name)

    Console.ReadKey()


End Sub

End Module

スクリプトの最初のエンコード部分は、エンコードされた文字列をデータベースに格納するために使用されます。出力は次のようになります。

[{"Name":"Josh","Email":"me@mail.co.uk","Age":17},{"Name":"Greg","Email":"greg@hotmail.co.uk","Age":17}]

この JSON 文字列をデコードしようとすると、エラーが発生しますUnable to cast object of type 'Newtonsoft.Json.Linq.JArray' to type 'JSONList[]'.

PHP を使用してデコードする Web サイトでデータを使用できるように、データを JSON 形式でエンコードする必要があります。JSON.NET と共に Visual Basic 2010 を使用しています。

4

2 に答える 2

0

@Adrianが言ったJsonConvert.DeserializeObjectように、.Netは構造JArrayの配列に自動的に変換できません。JSONListただし、手動で変換する必要はありません。DeserializeObject型パラメーターを受け入れるオーバーロードを使用するだけです。これにより、特別な変換コードを必要とせずに、Json.Net が型に直接逆シリアル化できるようになります。

Dim JSONDecode() As JSONList = _
                 JsonConvert.DeserializeObject(Of JSONList())(JSONEncode)
于 2013-12-29T01:11:44.380 に答える