Тема: Як написати парсер для JSON ?
Прів. Тут така справа, що в мене є JSON-файл, котрий потрібно завантажити і створити з нього купку об'єктів. І от так виходить, що жоден з існуючих плагінів не підходить мені для десереалізації, тому що проект створюється в одній прозі, потім переноситься на іншу платформу, і вже знову збирається в іншій прозі під іншу платформу.
Так от я і вирішив, що якщо це мені потрібно конкретно під мою задачу і конкретно під мій JSON-файл, то чому б і не написати свого десереалізатора?
Ну то я щось почав-почав, а потім щось застряг-застряг, і ніяка думка в голову не лізе.
ШО РОБИТИ???
using UnityEngine;
using System.Collections.Generic;
public enum State
{
OpenedChapter,
OpenedPage,
None
}
public class MyJsonParser {
public State state = State.None;
List<ChapterModel> Parse(string json)
{
List<ChapterModel> result = new List<ChapterModel>();
ChapterModel chapter;
PageModel page;
for(int i = 0; i<json.Length; i++)
{
char ch = json[i];
switch(state)
{
case State.None:
if(ch=='{' && state==State.None)
{
state = State.OpenedChapter;
chapter = new ChapterModel();
}
if(ch=='"' && state==State.OpenedChapter)
{
if (json[i + 1] =='p')
}
break;
case State.OpenedChapter:
break;
case State.OpenedPage:
break;
}
}
return result;
}
}
роблю під конкретно от таку штуку
[
{
"id": 1,
"pages": [
{
"BackgroundArt": "pg1pt01.jpg",
"ForeAddedArt": "pg1pt02.png",
"VFXloop": "desert storm between BGArt and FArt",
"VFXappeared": "from fade to screen (1s)",
"VFXnextSlide": "fade to black (1s)",
"BGAmbientLoop": null,
"BGMusicLoop": "music_titles.mp3",
"BGVoiceLoop": null,
"VFXSound": null,
"MusicSound": null,
"VoiceSound": null
},
{
"BackgroundArt": "pg2pt01.jpg",
"ForeAddedArt": null,
"VFXloop": "desert storm",
"VFXappeared": "from fade to screen (1s)",
"VFXnextSlide": null,
"BGAmbientLoop": "amb_storm.mp3",
"BGMusicLoop": null,
"BGVoiceLoop": null,
"VFXSound": "shuttle_flight_passby.mp3",
"MusicSound": null,
"VoiceSound": null
}
]
},
{
"id": 2,
"pages": [
{
"BackgroundArt": "pg11pt01.jpg",
"ForeAddedArt": null,
"VFXloop": null,
"VFXappeared": "from fade to screen (1s)",
"VFXnextSlide": null,
"BGAmbientLoop": "amb_storm_outside_engine_inside.mp3",
"BGMusicLoop": null,
"BGVoiceLoop": null,
"VFXSound": null,
"MusicSound": null,
"VoiceSound": null
},
{
"BackgroundArt": "previous kept",
"ForeAddedArt": "pg12pt01.png",
"VFXloop": null,
"VFXappeared": null,
"VFXnextSlide": "fade to black (1s)",
"BGAmbientLoop": "previous kept",
"BGMusicLoop": null,
"BGVoiceLoop": null,
"VFXSound": null,
"MusicSound": null,
"VoiceSound": "pilot002.mp3"
}
]
}
]