Parsen von Json mit mehreren Objekten newtonsoft
Versuche ich zu analysieren, ein ziemlich verworrenes/unnötig komplizierte JSON-Ausgabe mit newtonsoft in C# jedoch für einige Grund mein parser immer null zurückgibt und nicht aufwendige, wie genau, warum dies der Fall ist.
Ein Beispiel für eine JSON-Datei, die ich versuche zu analysieren:
{
"response": {
"success": 1,
"current_time": 1362339098,
"prices": {
"35": {
"11": {
"0": {
"current": {
"currency": "keys",
"value": 39,
"value_high": 41,
"date": 1357515306
},
"previous": {
"currency": "keys",
"value": 37,
"value_high": 39
}
}
},
"3": {
"0": {
"current": {
"currency": "metal",
"value": 0.33,
"value_high": 0.66
}
}
}
},
"5002": {
"6": {
"0": {
"current": {
"currency": "usd",
"value": 0.39,
"value_high": 0.42,
"date": 1358090106
}
}
}
},
"5022": {
"6": {
"1": {
"current": {
"currency": "metal",
"value": 1.33,
"value_high": 1.55,
"date": 1357515175
}
}
}
}
}
}
}
Und der C# - parser, den ich verwende. Ich führe das getCurrentPrices() zur Rückgabe eines PriceParser Objekt, sondern das Objekt zurückgegeben wird, ist immer null.
using System;
using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json;
using System.Diagnostics;
namespace SteamBot
{
class PriceParser
{
//Methods
public PriceParser updatePrices()
{
var json = File.ReadAllText("test.json");
ParserResult result = JsonConvert.DeserializeObject<ParserResult>(json);
return result.result;
}
public Data currentPrices { get; set; }
//DATA
public class Data
{
public Response Response { get; set; }
}
public class Response
{
public string success { get; set; }
public string current_time {get; set;}
public List<Price> prices { get; set;}
}
public class Price
{
public int defindex { get; set; }
public int quality { get; set; }
public Current current { get; set; }
public Previous previous { get; set; }
}
public class Current
{
public string currency { get; set; }
public float value { get; set; }
public float value_high { get; set; }
public int date { get; set; }
}
public class Previous
{
public string currency { get; set; }
public float value { get; set; }
public float value_high { get; set; }
public int date { get; set; }
}
protected class ParserResult
{
public PriceParser result { get; set; }
}
}
}
Ich bin wahrscheinlich einfach nur etwas fehlt blöd, aber für das Leben von mir ich kann nicht herausfinden, was, wer mehr JSON-Gerangel Erfahrung wissen, was hier Los ist?
- Ich habe deine bearbeiteten Titel. Bitte sehen, "Sollten Fragen enthalten "tags" im Titel?", wo der Konsens ist ", Nein, Sie sollten nicht".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bekommen Sie null-Werte, weil Ihre Klasse, Struktur passt nicht zu Ihrer JSON.
Das erste Problem ist, dass Sie zu Deserialisieren in eine
ParserResult
wenn Sie sollten eineData
.Data
hat eineresponse
Eigenschaft, passend zu Ihrer JSON.ParserResult
nicht diese Eigenschaft haben.Das zweite Problem ist, dass Sie festgelegt haben
prices
eineList<Price>
, aber dein JSON nicht enthalten ein array. Anstelle der JSON-Struktur ist eigentlich eine Reihe von verschachtelten dictionaries.Versuchen zu definieren, Ihre inneren Klassen wie diese:
Dann in Ihrer
updatePrices
Methode können Sie Deserialisieren wie diese:Hier ist, wie würden Sie dump aus den Daten:
Und hier ist die Ausgabe des obigen: