Сериализуйте Jagged Array и сохраните как JSON - PullRequest
0 голосов
/ 20 апреля 2020

Я хотел бы сохранить простой зубчатый массив как XML, но я не могу понять руководства, которые я видел в Интернете. Я хочу sh сохранить rawJagged как 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" };

Массив - это просто строковые ссылки для использования SpriteAtlas в Unity, но моя проблема сейчас просто C#. Я sh буду использовать JSON, чтобы использовать его в качестве файла шаблона и изменять его в Notepad ++ по мере необходимости.

Ответы [ 2 ]

3 голосов
/ 20 апреля 2020

Я ... Я не знаю, помогу ли я здесь, потому что это кажется слишком простым XD

Но работает следующий код:

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));

Дает мне:

[
   [
      "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"
   ]
]

Какой курс может быть прочитан обратно:

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]);

Какие выходные данные:

turret left return 0

Конечно, для этого используется пакет Newtonsoft json для де / сериализации .

Надеюсь, я помог:)

1 голос
/ 20 апреля 2020

получилось так:

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.");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...