Я пытаюсь десериализовать этот файл JSON в объект, но я не могу заставить его работать.Json Deserialize Object crashing
Json:
"hotkeySets": {
"Player 1": {
"chatOff": [
{
"actionsetting": {
"action": "Togglelist"
},
"keysequence": "Ctrl+B"
},
{
"actionsetting": {
"action": "Copy"
},
"keysequence": "Ctrl+C"
},
{
"actionsetting": {
"useObject": 3308,
"useType": "SelectUseTarget"
},
"keysequence": "F10"
},
],
"chatOn": [
{
"actionsetting": {
"action": "Select All"
},
"keysequence": "Ctrl+A"
},
{
"actionsetting": {
"chatText": "heal friend",
"sendAutomatically": true
},
"keysequence": "Ctrl+F1"
},
{
"actionsetting": {
"action": "Copy"
},
"keysequence": "Ctrl+C"
},
]
},
"Player 2": {
"chatOff": [
{
"actionsetting": {
"action": "ToggleBattlelist"
},
"keysequence": "Ctrl+B"
},
{
"actionsetting": {
"action": "Copy"
},
"keysequence": "Ctrl+C"
},
}
}
А вот код, я использую для десериализации его:
JToken hotkeyConfig = JObject.Parse(json)
JToken hotkeysSet = hotkeyConfig.SelectToken("hotkeySets");
var sets = JsonConvert.DeserializeObject<Dictionary<string, JObject>>(hotkeysSet.ToString());
foreach (var hotkeySet in sets) {
string hotkeySetName = hotkeySet.Key; // "Player 1" etc..
List<Hotkey> hotkeys = new List<Hotkey>();
foreach (var hotkey in hotkeySet.Value) {
Hotkey htk = JsonConvert.DeserializeObject<Hotkey>(hotkey.Value.ToString());
}
}
Но я могу получить объект Hotkey работать с Json десериализации. Я пробовал много вещей, и вот последний код, который я попробовал:
public class Hotkey {
[JsonProperty("actionsetting")]
public ActionSetting actionsetting;
[JsonProperty("keysequence")]
public string Shortcut { get; set; }
public class ActionSetting {
public int useObject{ get; set; }
public string chatText { get; set; }
public string useType{ get; set; }
public bool sendAutomatically{ get; set; }
}
}
Это сбой в линии «JsonConvert.DeserializeObject», говоря, неверный формат, так что, возможно, я что-то в моей классовой структуре отсутствует I Угадай.
Ваш код не компилируется. Что такое hotkeyConfig? Просто прочитав свой код, что-то не так? Почему вы вызываете десериализацию объекта столько раз, пока у вас есть только один файл JSON? Один вызов десериализации должен иметь возможность получить весь граф объектов. –
Это просто Json.Parse(), это называется «множественным» временем, потому что клавиши «Player 1», «Player 2» и т. Д., Все они динамичны, поэтому необязательно они получат эти имена, это может быть любое имя и десериализация словаря - это то, как я нашел, чтобы получить это имя (рабочий), но когда я пытаюсь десериализовать значение, оно разбивается – Cartel
Можете ли вы просто получить репрограмму, которая может компилироваться и запускаться? –