Я чувствую себя дингдонгом, который не может понять это, но надеюсь, что кто-то может либо помочь мне, либо указать мне правильное направление.
В настоящее время я конвертирую отдельные файлы для игры, над которой я работаю, в объект JSON. В настоящее время структура песни выглядит следующим образом:
public readonly int Id = 1;
public readonly int BPM = 120;
public readonly string Name = "Baby's";
public readonly string Artist = "Brian";
protected Song SongFile;
public Queue<NoteChart> Chart = new Queue<NoteChart>();
Chart.Enqueue(new NoteChart { gemType = 1, Key = "D", Lane = 8, beatTime = new TimeSpan(0, 0, 0, 5, 84) });
Довольно стандартные вещи, я полагаю. В любом случае, у меня есть iddue, превращающий этот Chart.Enqueue в объект JSON, поэтому я могу анализировать его таким образом, а не печатать. Пока у меня есть:
"Id": 1,
"BPM": 120,
"Name": "Baby",
"Artist": "Brian",
"SongFile": "Songs/Baby",
"Chart": {
}
Но, как видите, я застрял на графике. Как мне успешно преобразовать его в JSON для преобразования в С#? Или есть лучший способ сделать это?
Спасибо!
Спасибо, aepot, я понял эту часть и прошу прощения, если мой вопрос был сформулирован нечетко; Меня больше интересовало, как превратить строку Chart.Enque в верхнем коде в эквивалент JSON. Однако, спасибо!
string json = JsonSerializer.Serialize(Chart)
learn.microsoft.com/en-us/dotnet/standard/serialization/…
Можно ли в любом случае пропустить шаг создания его сначала на С# и вместо этого создать все это в JSON?
Конечно, реализуйте вручную паттерн «Конечный автомат» с помощью Utf8JsonReader
/*Writer
. Кстати, я не могу понять, как вы можете сделать это на С# без С#.
не могу найти ни одной проблемы
var chartItem = new ChartItem();
var json = JsonConvert.SerializeObject(chartItem, Newtonsoft.Json.Formatting.Indented);
public class ChartItem
{
public readonly int Id = 1;
public readonly int BPM = 120;
public readonly string Name = "Baby's";
public readonly string Artist = "Brian";
protected string SongFile;
public Queue<object> Chart =new ();
public ChartItem ()
{
Chart.Enqueue(new { gemType = 1, Key = "D", Lane = 8, beatTime = new TimeSpan(0, 0, 0, 5, 84) });
}
}
json
{
"Id": 1,
"BPM": 120,
"Name": "Baby's",
"Artist": "Brian",
"Chart": [
{
"gemType": 1,
"Key": "D",
"Lane": 8,
"beatTime": "00:00:05.0840000"
}
]
}
Покойся с миром, всемогущий JSON.NET
@aepot Покойся с миром, всемогущий Text.Json. Слава замечательному Newtonsoft.Json! Лучшая библиотека json!
Никаких больше наггетсов! :)
@aepot Слава самородкам. Самая популярная сетевая утилита
Что ж, они двое детей одного отца, да здравствует Джеймс Ньютон Кинг!
@AlbertoChiesa Да, вы правы. Да здравствует Джеймс Ньютон Кинг! И, кстати, его ответ на вопрос о Newtonsoft.Json был отвергнут 15 раз на этом ресурсе. И ему сказали, что он ошибается и не знает, как работает Newtonsoft.Json. Вы можете поискать и найти его ответ здесь.
Visual Studio может «вставить JSON как классы», также посмотрите на System.Text.Json, чтобы десериализовать его.