Ich erhalte JSON-Daten wie folgt von einer Drittanbieter-API, die ich nicht ändern kann:Wie deserialize [[int, int, int, int, string, string], [...]] von JSON
{"ts":1234567890,"updates":[[4,104482,8209,2000000007,1462994403,"some text","some text again",{"from":"1337"}],[80,7,0],[7,2000000007,104481],[62,76706856,7]]}
habe ich versucht, diesen Code es deserialisieren:
public class LongpollData
{
public ulong Ts { get; set; }
public List<Tuple<ApiEvent, int, ApiMask, ulong?, ulong?, string, string, FromInfo>> Updates { get; set; }
public class FromInfo
{
string From { get; set; }
}
public enum ApiEvent
{
delete = 0,
replace = 1,
setMessageFlags = 2,
resetMessageFlags = 3,
newMessage = 4,
readAllIn = 6,
readAllOut = 7,
friendIsOnline = 8,
friendIsOffline = 9,
chatChanged = 51,
userIsTyping = 61,
userIsTypingIn = 62,
userMadeCall = 70,
unreadMessagesCount = 80,
notificationSettingsChanged = 144,
}
[Flags]
public enum ApiMask
{
UNREAD = 1,
OUTBOX = 2,
REPLIED = 4,
IMPORTANT = 8,
CHAT = 16,
FRIENDS = 32,
SPAM = 64,
DELЕTЕD = 128,
FIXED = 256,
MEDIA = 512,
}
}
...
var UpdateData = JsonConvert.DeserializeObject<LongpollData>(webData);
aber ich bin immer eine Ausnahme:
Kann den aktuellen JSON-Array nicht deserialisieren (zB [1,2,3]) in Typ 'System.Tuple
8[VkKonekoBot.vkLongpollEvents+LongpollData+ApiEvent,System.Int32,VkKonekoBot.vkLongpollEvents+LongpollData+ApiMask,System.Nullable
1 [System.UInt64], System.Nullable`1 [System.UInt64], System.String, System.String, VkKonekoBot.vkLongpollEvents + LongpollData + FromInfo] ', da der Typ ein JSON-Objekt benötigt (z. {\ "name \": \ "value \"}) um korrekt zu deserialisieren. \ r \ nUm diesen Fehler zu beheben, ändern Sie den JSON in ein JSON-Objekt (zB {\ "name \": \ "wert \"}) oder Ändern Sie den deserialisierten Typ in ein Array oder einen Typ, der eine Auflistungsschnittstelle (z. B. ICollection, IList) wie List implementiert, die aus einem JSON-Array deserialisiert werden kann. JsonArrayAttribute können auch auf die Art hinzugefügt werden, um es zu zwingen aus einer JSON-Array deserialisieren. \ R \ nPath 'Updates [0]', Zeile 1, Position 29.
Was mache ich falsch?
und wenn Updates Feld ist leer (scheint wie folgt: '..." Updates ": []}') funktioniert einwandfrei – NOiSY
Versuchen Sie, den Typ der Updates auf Objekt [] – Gusman
wow, das funktioniert! aber wie kann ich 'object []' zu 'List>'? –
NOiSY