@p4p

C# Json в List MyClass как преобразовать?

Есть такой класс с категориями и типами:

public class NamedListBlock
        {
            public string Category;

            public List<string> Types = new List<string>();

            public NamedListBlock(string listName, List<string> theList)
            {
                this.Category = listName;
                this.Types = theList;
            }

        }


Есть json:
{ 
 "Catygocy 01": [ 
 "r1", 
 "r2", 
 "r3", 
 "r4"
 ], 
 "Catygocy 02": [ 
 "x1", 
 "x2", 
 "x3", 
 "x4"
 ], 
 "Catygocy 03": [ 
 "s1", 
 "s2", 
 "s3", 
 "s4"
 ] 
}


Использую SimpleJSON:

var DEC = JSON.Parse("MyJson");

Categories = new List<NamedListBlock>();
List<string> types = new List<string>();

foreach (var c in DEC)
            {
                Debug.Log(c.Key);

                foreach (var t in DEC[c.Key])
                {
                    Debug.Log(t.Value);
                }

            }


тут все хорошо выводится по порядку
категория 1
тип
тип
категория 2
тип типа

Но как мне это дело конвертнуть в мой класс?

Допустим категории я добавлю в цикле

Categories.Add(new NamedListBlock("", null) { Category = n.Key, Types = ?? });

А как извернуться и типы добавить в соответствии с категорями?

foreach (var t in DEC[c.Key])
                {
                    Categories.Find(x => x.Category == c.Key).Types.Add(t.Value);
                    Debug.Log(t.Value);
                }

- так не работает...
  • Вопрос задан
  • 1185 просмотров
Решения вопроса 1
@BashkaMen
C# программист
static async Task Main(string[] args)
        {
            var data = "{ \r\n \"Catygocy 01\": [ \r\n \"r1\", \r\n \"r2\", \r\n \"r3\", \r\n \"r4\"\r\n ], \r\n \"Catygocy 02\": [ \r\n \"x1\", \r\n \"x2\", \r\n \"x3\", \r\n \"x4\"\r\n ], \r\n \"Catygocy 03\": [ \r\n \"s1\", \r\n \"s2\", \r\n \"s3\", \r\n \"s4\"\r\n ] \r\n}";
            var json = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(data);

            var result = json.Select(s => new NamedListBlock(s.Key, s.Value));
        }


Сделал с NewtonJson, вам нужно по примеру переделать под SimpleJSON.
Он вам это парсит как Dictionary а дальше его нужно преобразовать
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@OwDafuq
Вообще, судя по вашему JSON коду можно составить такой класс:
public partial class Temperatures
{
	[JsonProperty("Catygocy 01")]
	public string[] Catygocy01 { get; set; }

	[JsonProperty("Catygocy 02")]
	public string[] Catygocy02 { get; set; }

	[JsonProperty("Catygocy 03")]
	public string[] Catygocy03 { get; set; }
}


Либо приведите ПОЛНЫЙ JSON код, либо пробуйте сами
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы