При анализе JSON он превращается в совершенно непригодные данные, с которыми я не могу работать. Несмотря на многочисленные попытки, полученные данные либо умен, либо неправильно отформатированы, когда я пытаюсь десериализировать и сохранить их обратно в файл. Глобальные переменные (такие как достижения) и объект с множеством сейвов. Каждое сохранение включает в себя вложенную строку JSON в поле Savedata. Моя цель состоит в том, чтобы проанализировать и изменить эти данные JSON при сохранении своей структуры, особенно при повторном заезде обратно в файл.
// Load save file into variable
fileContent = System.IO.File.ReadAllText(filePath);
// Parse JSON into a JsonDocument
savefileData = JsonNode.Parse(fileContent);
savefileDataRoot = savefileData;
...
// Deserialize the saves array
JsonArray? savesArray = savefileDataRoot["saves"] as JsonArray;
if (savesArray != null)
{
foreach (JsonNode? save in savesArray)
{
if (save?["slot"] is JsonValue slotValue && slotValue.TryGetValue(out int slotNumber) && slotNumber == selectedSaveFile)
{
savefileRoot = save; // Store the matching save entry
if (save["savedata"] is JsonValue savedataValue && savedataValue.TryGetValue(out string newRawJson))
{
savedataObject = JsonNode.Parse(newRawJson); // Deserialize the JSON string inside "savedata"
Console.WriteLine(savedataObject); // Here, the JSON is messed up already
}
break;
}
}
}
// Ensure savedataObject is treated as a proper JSON object, not a stringified JSON
if (savedataObject is JsonValue savedataText && savedataText.TryGetValue(out string newerRawJson))
{
if (!string.IsNullOrEmpty(newerRawJson) && newerRawJson.StartsWith("{"))
{
savedataObject = JsonNode.Parse(newerRawJson);
}
}
< /code>
json должен выглядеть так: < /p>
...
\"specialValues\": [\r\n \"RFU8547638325336\",\r\n \"{\\\"Id\\\":{\\\"TableReference\\\":\\\"Other\\\",\\\"TableEntryReferenceLong\\\":0,\\\"TableEntryReference\\\":\\\"Sender_BigDaddyHurt\\\"},\\\"ReplacementValue\\\":\\\"\\\"}\"\r\n ]\r\n },\r\n {\r\n \"read\": true,\r\n \"visibleAt\": 0,\r\n \"onReadEventHolder\": {\r\n \"data\": \"\",\r\n \"eventEnum\": 0\r\n },\r\n \"emailId\": \"FedUpConsolidation\",\r\n \"specialValues\": [\r\n \"WAL7194198375742\"
...
{\"name\":\"diarrheaHappened\",\"timeAdded\":30759,\"firstTimeAdded\":30759,\"times\":1},{\"name\":\"StreamStarted\",\"timeAdded\":30759,\"firstTimeAdded\":30759,\"times\":1},{\"name\":\"afterprologue\",\"timeAdded\":30759,\"firstTimeAdded\":30759,\"times\":1},{\"name\":\"LandlordEvent\",\"timeAdded\":30760,\"firstTimeAdded\":30760,\"times\":2}],\"search\":0.0,\"priestBotPoints\":0,\"nunPoints\":0,\"weeklyRent\":800,\"money\":22554518,\"casinoTokens\":202178,
...
< /code>
Однако при записи в файл выглядит следующим образом: < /p>
...
{
"name": "diarrheaHappened",
"timeAdded": 12479,
"firstTimeAdded": 12479,
"times": 1
},
{
"name": "cards",
"timeAdded": 13773,
"firstTimeAdded": 13773,
"times": 1
},
{
"name": "pets1",
"timeAdded": 13813,
"firstTimeAdded": 13813,
"times": 1
}
],
"search": 0,
"priestBotPoints": 0,
"nunPoints": 0,
"weeklyRent": 800,
"money": 12345,
"casinoTokens": 200122
< /code>
Что я пробовал: < /p>
Обширные исследования, включая другие сообщения Stackoverflow. < /li>
Попытка решений из Chatgpt и Copilot. < /li>
Настройка различных частей процесса десериализации и сериализации. < /li>
< /ul>
Сегодня я работаю над этим около 14 часов, и проблема сохраняется. Данные не сохраняют ожидаемый формат при десериализованном и переоснащении, и независимо от того, что я пытаюсь, строка SaveData либо повреждена, либо потеряна. < /P>
Пожалуйста, помогите мне понять, что идет не так. С помощью этой логики анализа и, если возможно, предоставьте решение, которое поддерживает исходную структуру JSON при сохранении обратно. Я бы предпочел не переходить на Newtonsoft.json, если это не будет , так как это значительно увеличило бы окончательный размер моей программы.
Подробнее здесь: https://stackoverflow.com/questions/794 ... -structure
Stop System.text.json с изменением структуры JSON ⇐ C#
Место общения программистов C#
-
Anonymous
1738694976
Anonymous
При анализе JSON он превращается в совершенно непригодные данные, с которыми я не могу работать. Несмотря на многочисленные попытки, полученные данные либо умен, либо неправильно отформатированы, когда я пытаюсь десериализировать и сохранить их обратно в файл. Глобальные переменные (такие как достижения) и объект с множеством сейвов. Каждое сохранение включает в себя вложенную строку JSON в поле Savedata. Моя цель состоит в том, чтобы проанализировать и изменить эти данные JSON при сохранении своей структуры, особенно при повторном заезде обратно в файл.
// Load save file into variable
fileContent = System.IO.File.ReadAllText(filePath);
// Parse JSON into a JsonDocument
savefileData = JsonNode.Parse(fileContent);
savefileDataRoot = savefileData;
...
// Deserialize the saves array
JsonArray? savesArray = savefileDataRoot["saves"] as JsonArray;
if (savesArray != null)
{
foreach (JsonNode? save in savesArray)
{
if (save?["slot"] is JsonValue slotValue && slotValue.TryGetValue(out int slotNumber) && slotNumber == selectedSaveFile)
{
savefileRoot = save; // Store the matching save entry
if (save["savedata"] is JsonValue savedataValue && savedataValue.TryGetValue(out string newRawJson))
{
savedataObject = JsonNode.Parse(newRawJson); // Deserialize the JSON string inside "savedata"
Console.WriteLine(savedataObject); // Here, the JSON is messed up already
}
break;
}
}
}
// Ensure savedataObject is treated as a proper JSON object, not a stringified JSON
if (savedataObject is JsonValue savedataText && savedataText.TryGetValue(out string newerRawJson))
{
if (!string.IsNullOrEmpty(newerRawJson) && newerRawJson.StartsWith("{"))
{
savedataObject = JsonNode.Parse(newerRawJson);
}
}
< /code>
json должен выглядеть так: < /p>
...
\"specialValues\": [\r\n \"RFU8547638325336\",\r\n \"{\\\"Id\\\":{\\\"TableReference\\\":\\\"Other\\\",\\\"TableEntryReferenceLong\\\":0,\\\"TableEntryReference\\\":\\\"Sender_BigDaddyHurt\\\"},\\\"ReplacementValue\\\":\\\"\\\"}\"\r\n ]\r\n },\r\n {\r\n \"read\": true,\r\n \"visibleAt\": 0,\r\n \"onReadEventHolder\": {\r\n \"data\": \"\",\r\n \"eventEnum\": 0\r\n },\r\n \"emailId\": \"FedUpConsolidation\",\r\n \"specialValues\": [\r\n \"WAL7194198375742\"
...
{\"name\":\"diarrheaHappened\",\"timeAdded\":30759,\"firstTimeAdded\":30759,\"times\":1},{\"name\":\"StreamStarted\",\"timeAdded\":30759,\"firstTimeAdded\":30759,\"times\":1},{\"name\":\"afterprologue\",\"timeAdded\":30759,\"firstTimeAdded\":30759,\"times\":1},{\"name\":\"LandlordEvent\",\"timeAdded\":30760,\"firstTimeAdded\":30760,\"times\":2}],\"search\":0.0,\"priestBotPoints\":0,\"nunPoints\":0,\"weeklyRent\":800,\"money\":22554518,\"casinoTokens\":202178,
...
< /code>
Однако при записи в файл выглядит следующим образом: < /p>
...
{
"name": "diarrheaHappened",
"timeAdded": 12479,
"firstTimeAdded": 12479,
"times": 1
},
{
"name": "cards",
"timeAdded": 13773,
"firstTimeAdded": 13773,
"times": 1
},
{
"name": "pets1",
"timeAdded": 13813,
"firstTimeAdded": 13813,
"times": 1
}
],
"search": 0,
"priestBotPoints": 0,
"nunPoints": 0,
"weeklyRent": 800,
"money": 12345,
"casinoTokens": 200122
< /code>
Что я пробовал: < /p>
Обширные исследования, включая другие сообщения Stackoverflow. < /li>
Попытка решений из Chatgpt и Copilot. < /li>
Настройка различных частей процесса десериализации и сериализации. < /li>
< /ul>
Сегодня я работаю над этим около 14 часов, и проблема сохраняется. Данные не сохраняют ожидаемый формат при десериализованном и переоснащении, и независимо от того, что я пытаюсь, строка SaveData либо повреждена, либо потеряна. < /P>
Пожалуйста, помогите мне понять, что идет не так. С помощью этой логики анализа и, если возможно, предоставьте решение, которое поддерживает исходную структуру JSON при сохранении обратно. Я бы предпочел не переходить на Newtonsoft.json, если это не будет [b] [/b], так как это значительно увеличило бы окончательный размер моей программы.
Подробнее здесь: [url]https://stackoverflow.com/questions/79412726/stop-system-text-json-from-changing-json-structure[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия