Reputation: 67
I would like to save a simple jagged array as an XML, but I can't seem to understand the guides I've seen online.
I wish to save rawJagged
as JSON:
string[][] rawJagged = new string[2][];
rawJagged[0] = new string[1] { "turret idle" };
rawJagged[1] = new string[9] { "turret idle", "turret left kickback 0", "turret left kickback 1", "turret left kickback final", "turret left return 0", "turret left return 1", "turret left return 2", "turret left return 3", "turret left return final" };
The array is just string references to use by a SpriteAtlas in Unity, but my problem is purely C# right now. I wish to use JSON so I can use this as a template file and modify it within Notepad++ as needed.
Upvotes: 1
Views: 277
Reputation: 67
got it working like so:
using System;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.IO;
"turret left kickback 1", "turret left kickback final", "turret left return 0", "turret left return 1", "turret left return 2", "turret left return 3", "turret left return final" });
namespace fork
{
class Program
{
public static List<List<string>> rawJagged;
static void Main()
{
//sample data:
//rawJagged = new List<List<string>>();
//rawJagged.Add(new List<string> { "turret idle" });
//rawJagged.Add(new List<string> { "turret idle", "turret left kickback 0",
while (true)
{
if (Console.ReadKey(true).Key == ConsoleKey.S)
{
Save();
}
else if (Console.ReadKey(true).Key == ConsoleKey.L)
{
Load();
}
else if (Console.ReadKey(true).Key == ConsoleKey.D)
{
Delete();
}
}
}
static void Save()
{
string json = JsonConvert.SerializeObject(rawJagged);
File.Delete(@"C:\Users\Artin\Desktop\test.json");
System.IO.File.WriteAllText(@"C:\Users\Artin\Desktop\test.json", json);
Console.WriteLine("saved.");
}
static void Load()
{
string json = System.IO.File.ReadAllText(@"C:\Users\Artin\Desktop\test.json");
rawJagged = JsonConvert.DeserializeObject<List<List<string>>>(json);
Console.WriteLine("loaded.");
}
static void Delete()
{
File.Delete(@"C:\Users\Artin\Desktop\test.json");
Console.WriteLine("deleted.");
}
}
}
Upvotes: 1
Reputation: 718
I... I do not know if I'm being helpful here because this seems too easy XD
But running the following code:
string[][] rawJagged = new string[2][];
rawJagged[0] = new string[1] { "turret idle" };
rawJagged[1] = new string[9] { "turret idle", "turret left kickback 0", "turret left kickback 1", "turret left kickback final", "turret left return 0", "turret left return 1", "turret left return 2", "turret left return 3", "turret left return final" };
Console.WriteLine(JsonConvert.SerializeObject(rawJagged));
Gives me:
[
[
"turret idle"
],
[
"turret idle",
"turret left kickback 0",
"turret left kickback 1",
"turret left kickback final",
"turret left return 0",
"turret left return 1",
"turret left return 2",
"turret left return 3",
"turret left return final"
]
]
Which ofcourse can be read back in:
string[][] rawJagged = new string[2][];
rawJagged[0] = new string[1] { "turret idle" };
rawJagged[1] = new string[9] { "turret idle", "turret left kickback 0", "turret left kickback 1", "turret left kickback final", "turret left return 0", "turret left return 1", "turret left return 2", "turret left return 3", "turret left return final" };
string serialized = JsonConvert.SerializeObject(rawJagged);
var deserialized = JsonConvert.DeserializeObject<string[][]>(serialized);
Console.WriteLine(deserialized[1][4]);
Which outputs:
turret left return 0
Ofcourse this does use the Newtonsoft json package for de/serialization.
I hope I have helped :)
Upvotes: 3