2016-04-03 2 views
1

Ich habe die folgende Zeichenfolge jsonParsing Json in vb.net mit newtonsot.json

{ 
    "extractorData" : { 
"url" : "http://absa.co.za/Absacoza/Indices/Absa-Exchange-Rates", 
"resourceId" : "4dd52d44301ebd50db87975bf5df9711", 
"data" : [ { 
    "group" : [ { 
    "absa" : [ { 
     "text" : "USD" 
    } ] 
    }, { 
    "absa" : [ { 
     "text" : "US Dollar" 
    } ] 
    }, { 
    "absa" : [ { 
     "text" : "*" 
    } ] 
    }, { 
    "absa" : [ { 
     "text" : "14.429" 
    } ], 
    "Buying" : [ { 
     "text" : "14.429" 
    } ] 
    }, { 
    "absa" : [ { 
     "text" : "14.409" 
    } ] 
    }, { 
    "absa" : [ { 
     "text" : "14.404" 
    } ] 
    }, { 
    "absa" : [ { 
     "text" : "14.8323" 
    } ], 
    "Selling" : [ { 
     "text" : "14.8323" 
    } ] 
    }, { 
    "absa" : [ { 
     "text" : "14.8373" 
    } ] 
    } ] 
} ] 
}, 
"pageData" : { 
"statusCode" : 200, 
"timestamp" : 1459675946038 
} 
} 

Ich habe auch die folgenden Klassen

Public Class Rootobject 
    Public Property extractorData As Extractordata 
    Public Property pageData As Pagedata 
End Class 

Public Class Extractordata 
    Public Property url As String 
    Public Property resourceId As String 
    Public Property data() As Datum 
End Class 

Public Class Datum 
    Public Property group() As Group 
End Class 

Public Class Group 
    Public Property absa() As Absa 
    Public Property Buying() As Buying 
    Public Property Selling() As Selling 
End Class 

Public Class Absa 
    Public Property text As String 
End Class 

Public Class Buying 
    Public Property text As String 
End Class 

Public Class Selling 
    Public Property text As String 
End Class 

Public Class Pagedata 
    Public Property statusCode As Integer 
    Public Property timestamp As Long 
End Class 

Wie kann ich die Werte für Kauf und Verkauf extrahieren mit newtonsoft.json? Ich habe in den letzten 4 Stunden nach Beispielen gesucht und versucht, und ich bin immer noch nicht näher an einer Antwort. Ich bin sehr neu in JSon

bitte helfen

+0

[? Deserialize it] (http://stackoverflow.com/a/20080586/3740093) –

+0

Wenn du es * parsen willst, brauchst du diese Klassen nicht, du kannst die Werte einzeln auslesen. Wenn Sie es * deserialisieren wollen, verwenden Sie die Klassen. Nicht klar was du willst. – Plutonix

+0

@Plutonix: In beiden Fällen wäre die Deserialisierung wahrscheinlich immer noch die einfachste. ;) –

Antwort

1

Anscheinend Ihr Code nicht korrekt desertizare wegen der Art und Weise Sie Definieren Sie die Arrays. Putting es in Form von Public Property data As List(Of Datum) (und so weiter) anstelle von Public Property data() As Datum löst das Problem.

Der vollständige und getestete Code kann hier gefunden werden. Dies ist, wie Sie den json Text deserialisieren:

Sub Main() 

    Dim jsonAsText = File.ReadAllText("C:\Path\To\json.txt") 
    Dim deserializedRootObject = Newtonsoft.Json.JsonConvert.DeserializeObject(Of RootObject)(jsonAsText) 

End Sub 

Diese Deserialisierung verwendet RootObject und seine Unterobjekte, die hier gezeigt werden:

Public Class Absa 
    Public Property text As String 
End Class 

Public Class Buying 
    Public Property text As String 
End Class 

Public Class Selling 
    Public Property text As String 
End Class 

Public Class Group 
    Public Property absa As List(Of Absa) 
    Public Property Buying As List(Of Buying) 
    Public Property Selling As List(Of Selling) 
End Class 

Public Class Datum 
    Public Property group As List(Of Group) 
End Class 

Public Class ExtractorData 
    Public Property url As String 
    Public Property resourceId As String 
    Public Property data As List(Of Datum) 
End Class 

Public Class PageData 
    Public Property statusCode As Integer 
    Public Property timestamp As Long 
End Class 

Public Class RootObject 
    Public Property extractorData As ExtractorData 
    Public Property pageData As PageData 
End Class 
+1

Danke Xavier.Ihr Beispiel hat mir geholfen, es zum Laufen zu bringen – Craig

0

Sie können versuchen Beispiel aus newtonsoft.com

string json = @"{ 
    'Email': '[email protected]', 
    'Active': true, 
    'CreatedDate': '2013-01-20T00:00:00Z', 
    'Roles': [ 
     'User', 
    'Admin' 
    ] 
    }"; 

    Account account = JsonConvert.DeserializeObject<Account>(json); 

    Console.WriteLine(account.Email); 
genommen Bellow

http://www.newtonsoft.com/json/help/html/deserializeobject.htm

+0

Dank Amir, aber ich habe gesucht und versucht, es den ganzen Tag arbeiten, indem Sie Beispiele wie die, die Sie gepostet haben. Gibt es jemanden hier, der vielleicht ein Codebeispiel bereitstellen könnte, um die Werte aus der von mir bereitgestellten JSON-Zeichenfolge zu extrahieren? – Craig

+0

@Craig Die JSON ist nicht nur eine ausgefallene Zeichenkette, aus der Sie Informationen extrahieren - es handelt sich um serialisierte Daten. Sie müssen es entweder zu einem Objekt deserialisieren und die Eigenschaften abrufen oder es analysieren, um die gewünschten Teile herauszupicken. – Plutonix

+0

@Craig Ich habe den vollständigen Arbeitscode in meiner Antwort angegeben (siehe Antwort unten). Und ich habe herausgefunden, was mit deinem Code überhaupt nicht funktioniert hat. –